1

我有一个请求队列和一个响应队列。我想将消息从请求队列中取出并放入响应队列。我希望能够确定从请求队列中取出的相同消息已放入响应队列。

我在 GAE 上使用 Boto。

首先,我假设消息 id 是不变的。所以我从请求队列中读取消息,将相同的消息对象添加到响应队列并查询 id - SQS 生成了一个新的。

其次,我的消息正文是一个 json 对象,所以我添加了一个自定义字段“messageId”并生成了我自己的 id 以存储在队列中。但后来我看到,一次从队列中读取 10 条消息是有限制的。另外,由于 SQS 的分布式特性,不保证消息一定会被返回。

4

1 回答 1

2

您的消息将被传递,只是不一定在任何给定的请求中获取它,因为您将与后端服务器的随机子集交谈。SQS 没有办法说,“我知道有 3 条消息给我,现在就给我。” 你能做的最好的就是轮询,直到你最终收到它们。SQS 非常简洁,但它并不是所有事情的正确选择,如果您想要具有更少延迟、更高可预测性和有序消息的东西,请查看 RabbitMQ。Rabbit 的唯一问题是规模现在是您的问题。

于 2012-06-25T16:47:41.193 回答