2012-06-25 112 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。现在只有兔子的问题规模是你的问题。