Как сообщить моему приложению (производителю), что оно заблокировано сервером ActiveMQ? - PullRequest
0 голосов
/ 25 апреля 2018

Я использую Artemis ActiveMQ для внутренних асинхронных процессов моего приложения.
Вся логика подключения обрабатывается Spring Integration.
Я столкнулся с сценарием нехватки дискового пространства на сервере artemis. Это привело к тому, что сервер artmeis заблокировал моих производителей сообщений без какого-либо предупреждения (кроме предупреждения в журнале сервера artemis). Однако это может быть любой другой сценарий блокировки.
Приложение продолжало создавать сообщения, не зная, что сообщения не записываются в очередь.
Как мое приложение (производитель) может быть проинформировано о такой проблеме инфраструктуры, чтобы я мог выдать исключение или записать ошибку, которая будет видна в конце моих приложений.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Как и ActiveMQ, сервер Artemis поддерживает управление потоком производителя (лично никогда не использовал его).В то время как в документации ActiveMQ прямо указано, что она также применяется к асинхронным производителям, при условии, что вы установили Размер окна производителя на фабрике соединений, документация Artemis ничего не говорит об этом.Но концепция управления окнами такая же.Вы, вероятно, должны дать ему шанс.

0 голосов
/ 25 апреля 2018

Если ваше приложение отправляет сообщения асинхронно, то у него нет возможности узнать о проблемах с отправкой сообщения (за исключением проблем, которые происходят именно на клиенте). Отправка сообщений в асинхронном режиме - «запусти и забудь»; клиент просто отправляет их и не заботится о том, что с ними происходит. Вам нужно будет отправить их синхронно , чтобы получить какие-либо признаки проблемы у брокера.

...