1

Amazon sqsからのメッセージをsqsに挿入されたのと同じ順序で受け取りたい(先入れ先出しモデル)。それを実装する方法はありますか?私はプログラミングにzendphpを使用しています。

4

4 に答える 4

1

順序付けられていないメッセージ配信は、SQSの設計に固有のものです。メッセージに番号を付け、欠落しているメッセージが到着するまで順序が正しくないメッセージをローカルに保存することで回避を試みることができますが、おそらく面倒な価値はありません。

SQSは実際には少し奇妙なアヒルであり、それが言うことを実行しますが、それが実行することは、ほとんどの人がメッセージバスで探しているものではありません。AmazonがRabbitMQのような追加のキューイングソリューションを提供してくれることを本当に望んでいます。SQSは、実際には、リモートで結合されていないタスクの分散にのみ適しており、順序やレイテンシーなどは重要ではありません。たとえば、完了した注文を配送センターに送信したり、印刷ジョブをスケジュールしたりするのに最適です。

彼ら自身のドキュメントには、サムネイルの作成をスケジュールするために使用されていることが示されていますが、最近この目的で使用したとき、ユーザーが待ち時間(30〜50秒)に感銘を受けないことにすぐに気付きました。

EC2ノードでRabbitMQを実行することはできますが、SQSほどスケーラブルではありませんが、クラスター化されるため、かなり遠くまで行くことができます。

于 2012-06-04T18:14:17.160 に答える
0

IronMQを試すことができます。SQSのようにホストされ、先入れ先出しの注文を保証し、結果整合性の遅延がなく、非常にスケーラブルで、数分で稼働できます。

そのためのPHPライブラリは次のとおりです:https ://github.com/iron-io/iron_mq_php

免責事項:私はIron.ioで働いています

于 2012-06-15T18:41:24.340 に答える
0

SQSのドキュメントがこれに答えます (太字は、質問に直接答えることに重点を置いています)。

Amazon SQS はメッセージの順序を維持するために最善を尽くしますが、キューの分散型の性質により、送信したとおりの順序でメッセージを受信することを保証することはできません。システムで順序を維持する必要がある場合は、受信時にメッセージを並べ替えることができるように、各メッセージにシーケンス情報を配置することをお勧めします。

于 2014-07-10T22:18:40.983 に答える