Spring Jms получает пакетное сообщение - PullRequest
0 голосов
/ 10 декабря 2018

Я могу просто использовать этот код для получения сообщений из очереди

List<Message> messages = sqs.receiveMessage(queueUrl).getMessages();

Он получит максимум 10 сообщений из очереди в соответствии с документацией Amazon

Допустим, у меня есть 10 000 сообщений ия хочу 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;
    }

IЯ до сих пор не могу достичь этого 800 TPS с ним.Есть ли способ получить 10 сообщений на поток или что-то еще? Вместо того, чтобы получить одно сообщение, можем ли мы сделать 10 сообщений, что в конечном итоге увеличивает пропускную способность?Если у вас есть предложения получше, пожалуйста?

Как оптимизировать, когда производитель производит больше, а потребитель потребляет меньше?

Как вы настраиваете своего слушателя jms?Спасибо.

...