我有四个当前的消费者在Amazon AWS上侦听同一个队列。从队列中拉下消息时,有时两个不同的消费者会消耗相同的消息。请参阅下面的日志:
18:01:46,515 [jmsContainer-2] DEBUG - 从队列收到的消息:ID:3698a927-930b-4d6a-aeca-f66922528792
18:02:12,825 [jmsContainer-3] DEBUG - 从队列收到的消息:ID:3698a927-930b-4d6a-aeca-f66922528792
我有一个带有4个并发使用者的JMS容器设置。我将可见性超时设置为30秒。
由于container2收到了消息,容器3怎么还能访问它?
JMS容器在执行侦听器方法(handleMessage)之前或之后是否执行自动确认?
答案 0 :(得分:6)
亚马逊并不保证一旦交付SQS。他们保证“至少一次”交付。这在FAQ https://aws.amazon.com/sqs/faqs/
中得到了解决您必须牢记这一点,并设计您的系统以优雅地处理重复的邮件传递。
答案 1 :(得分:0)
现在可以使用FIFO SQS队列。您可以确保正好有一个客户端收到邮件,然后在邮件进行中将其删除
更多信息在这里: