SQS FIFO队列多次将消息传递给消费者

时间:2019-01-29 16:46:21

标签: spring-boot amazon-sqs

我们断断续续地看到消费者对消息进行了多次提取和处理。我们有并发的消费者在等待消息。

我们正在使用spring连接到SQS FIFO队列,SQS中大约有40个队列。 在我们的情况下,Visibilitytimeout为30秒。但是从时间戳来看,消费者在非常短的时间间隔(不到30秒)内选择了邮件

@Bean
public JmsListenerContainerFactory<?> sqsFactory(ConnectionFactory 
 connectionFactory,                                              
    DefaultJmsListenerContainerFactoryConfigurer configurer) {
         DefaultJmsListenerContainerFactory factory = new 
         DefaultJmsListenerContainerFactory();
         factory.setConnectionFactory(this.connectionFactory);
         factory.setDestinationResolver(new DynamicDestinationResolver());
         factory.setConcurrency("1-50");
         factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
         return factory;
}
 --------Listener class----
 @Service
 public class QueueListener{
     @JmsListener(destination = "${queue.listener}", 
                    containerFactory = "sqsFactory")
      public void onMessage(Message msg) {

    try {
        msg.acknowledge();

    } catch (JMSException e) {
        e.printStackTrace();
    } 

      //processMsg()
 }

0 个答案:

没有答案