весенняя загрузка в память activemq - PullRequest
0 голосов
/ 23 ноября 2018

Я использовал это руководство для создания простой службы ActiveMQ при загрузке Spring, которая получает сообщение от контроллера остатка, а затем передает его слушателю.Затем слушатель выполняет некоторую обработку, которая занимает около 40 секунд, но у меня нет возможности получить результат после его обработки.

https://github.com/TechPrimers/inmemory-spring-boot-activemq-example

Пока все работает, как и ожидалось, но я хочу иметь возможность получить результаты, обработанные слушателем.

Один из способов думать об этом - создать еще один контроллер покоя, который возвращает результат задания, выполненного слушателем.И с помощью реляционной базы данных для управления идентификаторами и сообщениями.

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

Есть ли в ActiveMQ и / или в Spring что-нибудь встроенное для управления этим?

1 Ответ

0 голосов
/ 23 ноября 2018

То, что вы описываете, звучит для меня как шаблон запроса-ответа , который является распространенным в корпоративных сценариях интеграции.

Если предположить, что результаты работы будут использованы довольно быстро, то я бы порекомендовал вам просто поместить результаты в другое сообщение и отправить это сообщение в очередь «ответа».Исходное сообщение может содержать «идентификатор корреляции», который слушатель также может использовать в ответном сообщении, чтобы результаты можно было сопоставить с запросом.

Если результаты не будут использованы достаточно быстро, тогда база данныхвероятно, лучше, поскольку брокеры сообщений не предназначены для таких хранилищ данных, как базы данных.Кроме того, существуют встроенные базы данных в памяти, которые, вероятно, будут работать хорошо для вас, если вы пойдете по этому пути.

...