我们断断续续地看到消费者对消息进行了多次提取和处理。我们有并发的消费者在等待消息。
我们正在使用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()
}