Я могу просто использовать этот код для получения сообщений из очереди
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?Спасибо.