Spring Jms收到批处理消息

时间:2018-12-10 12:51:42

标签: amazon-sqs spring-jms

我可以简单地使用此代码从队列中接收消息

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侦听器? 谢谢。

0 个答案:

没有答案