JMSTemplate и настройка свойств для приложения с высокой степенью параллелизма - PullRequest
0 голосов
/ 04 июня 2018

У меня есть приложение, которое будет обрабатывать сотни тысяч (500 000+) запросов JMS в день.Приложение отвечает за маршрутизацию сообщения в новое место назначения на основе информации, полученной в запросе.

При обработке запроса мне также требуется возможность изменить некоторые атрибуты JMS.Например, мне нужно установить постоянство, время жизни и приоритет сообщений.Итак, мой слушатель получает сообщения, запрашивает сообщение запроса, определяет место назначения, а затем устанавливает эти свойства в шаблоне JMS.

Мой вопрос касается параллелизма и установки этих свойств.Допустим, я обрабатываю 2 одновременных запроса.Запрос A устанавливает постоянство как постоянное, а запрос B устанавливает постоянство как непостоянное.Есть ли какая-то опасность, что запрос A будет считаться непостоянным?Может ли установка этих свойств на уровне шаблона вызвать проблемы?

Вот пример кода, который устанавливает эти свойства:

    jmsTemplate.setExplicitQosEnabled(true);
    jmsTemplate.setDeliveryPersistent(isPersistent);
    jmsTemplate.setTimeToLive(timeToLive);
    jmsTemplate.setPriority(priority);

    jmsTemplate.send(createQueue(encoding));

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 04 июня 2018

Да;это вызовет проблемы;По этой причине Spring Integration использует DynamicJmsTemplate (хранение свойств в ThreadLocal s).

Он не поддерживает все необходимые свойства, но вы можете использовать его в качестве модели.

Вот код и , вот как он используется .

...