2012-06-25 219 views
1

我有一個請求隊列和一個響應隊列。我想將消息從請求隊列中取出並放入響應隊列中。我希望能夠確定從請求隊列中取出的相同消息已被放入響應隊列中。在SQS隊列中跟蹤消息

我在GAE上使用Boto。

首先,我假設消息id是恆定的。所以我從請求隊列讀取消息,將相同的消息對象添加到響應隊列中,並查詢id - SQS生成了一個新消息。

其次,我的消息正文是一個json對象,所以我添加了一個自定義字段'messageId'並生成了我自己的ID以存儲隊列。但是後來我發現從隊列中每次讀取10條消息是有限制的。另外,由於SQS的分佈式特性,不保證該消息將被返回。

+0

消息ID是由SQS生成的,你不能控制它們是什麼,所以在消息體中使用你自己的ID聽起來是正確的。我不明白爲什麼每次閱讀10封郵件是個問題。你能解釋更多嗎?另外,SQS不保證將傳遞消息。它確保交付,但訂單不被保留。 – garnaat

回答

2

您的郵件將被髮送,但不一定在任何給定的請求中獲取它,因爲您將與後端服務器的隨機子集進行交談。 SQS沒有辦法說:「我知道我有3條消息,現在就把它們給我。」你可以做的最好的是投票,直到你最終收到它們。 SQS非常整潔,但它不是正確的選擇,如果您希望延遲更少,可預測性更強,並且有條件的消息,請查看RabbitMQ。現在只有兔子的問題規模是你的問題。