amazon-sqs-java-messaging-lib在启动时收到2条消息

时间:2018-04-17 20:34:47

标签: java amazon-web-services spring-boot amazon-sqs spring-jms

我正在使用amazon-sqs-java-messaging-lib@JmsListener阅读SQS队列。

我的配置如下:

@Configuration
@EnableJms
public class JmsConfig {
  @Bean
  public SQSConnectionFactory connectionFactory(AmazonSQS amazonSQS) {
    return new SQSConnectionFactory(new ProviderConfiguration(), amazonSQS);
  }

  @Bean
  public JmsTemplate jmsTemplate(SQSConnectionFactory connectionFactory) {
    return new JmsTemplate(connectionFactory);
  }

  @Bean
  public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(SQSConnectionFactory connectionFactory,
                                                                        MessageConverter converter) {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setMaxMessagesPerTask(1);
    factory.setConnectionFactory(connectionFactory);
    factory.setDestinationResolver(new DynamicDestinationResolver());
    factory.setConcurrency("1");
    factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
    factory.setMessageConverter(converter);
    return factory;
  }
}

这里我的意思是我想严格逐个处理邮件。

当我的队列包含多条消息并且应用程序启动时,我正在处理用例。

当应用程序连接到队列时,它在一开始就会收到2条消息。之后它会逐个消耗,但在飞行中的消息数总是2。

(我试图调试,看起来像SQSMessageConsumerPrefetch错过了它的第一次阅读)

这是我的错误配置还是真正的问题? 谢谢

0 个答案:

没有答案