我可以简单地使用此代码从队列中接收消息
List<Message> messages = sqs.receiveMessage(queueUrl).getMessages();
根据亚马逊文档,它将从队列中最多获取10条消息
可以说我有1万条消息,我希望消耗800 TPS。因此,我尝试了JMS侦听器的Spring Jms实现,定义了JMS侦听器,并将并发定义为“ 5-100”。
@JmsListener
public void getMessage(String message) {
//process it
}
我可以定义类似
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() throws Throwable {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setConcurrency("5-100");
return factory;
}
我仍然无法达到800 TPS。是否有任何方法可以在每个线程或某些东西中获取10条消息,而不是获取一条消息,我们可以做10条消息最终增加吞吐量吗? 如果您有更好的建议,请执行?
当生产者生产更多而消费者消耗更少时,如何进行优化?
您如何调整jms侦听器? 谢谢。