Есть ли какие-либо параметры настройки, чтобы ускорить мое приложение, которое останавливается при отправке сообщений в очередь JMS - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь выполнить приложение под (разумной) нагрузкой.Под нагрузкой происходит то, что при попытке поместить сообщение в очередь приложение останавливается примерно на 4 секунды, прежде чем завершить отправку.Странно то, что сразу после этого следующему сообщению требуется несколько миллисекунд для помещения в очередь.Сообщение фактически является тем же сообщением, поэтому размер сообщения не имеет значения.

Приложение использует Spring Boot 2.1.6, Apache Qpid 0.43.0 в качестве поставщика JMS / AMQP.

Используемой шиной сообщений является Azure ServiceBus, но я наблюдал то же поведение при использовании Artemis.

В Apache Qpid JmsConnectionFactory я попытался поиграться со свойствами «forceSyncSend».

Я пытался использовать Spring Boot CachingConnectionFactory для кэширования только производителей сообщений.Я увеличил размер кэша по умолчанию с 1 до 20. Безуспешно.

Я посмотрел параметры JmsTemplate, но не могу найти никаких параметров в отношении производителей сообщений (много со слушателями, но это другая история).

Код, выполняющий отправку, довольно прост:

private void sendToQueue(Object message, String queueName) {
        jmsTemplate.convertAndSend(queueName, message, (Message jmsMessage) -> {
            jmsMessage.setStringProperty(OBJECT_TYPE_PARAMETER, message.getClass().getSimpleName());
            return jmsMessage;
        });

Есть что-нибудь очевидное, чтобы попробовать?Есть ли какие-либо параметры настройки, чтобы остановить этот срыв?

Нагрузка на систему не является тривиальной, но она не чрезмерна (она должна быть намного выше, чем в данный момент!)

Есть идеи?

...