2016-02-23 2 views
-1

У меня есть Apache ActiveMQ, встроенный в мой проект на стороне сервера java 8. Его работа прекрасна, и я могу отправлять и потреблять сообщения из предварительно сконфигурированных очередей. Теперь мне нужно иметь возможность программно удалять сообщения из очереди по запросу. После прочтения некоторых документов я обнаружил, что Apache ActiveMQ имеет подпроект под названием Artemis, который, как представляется, обеспечивает требуемую функциональность. Но я немного смущен тем, как это сделать. Является плагином Artemis поверх ActiveMQ, и мне просто нужно добавить необходимые зависимости и использовать инструменты или это отдельный продукт, и он не работает с Active MQ, а как независимый продукт. Если да, то каким образом я могу управлять отдельными сообщениями (в частности, удалить запрошенное сообщение) в Active MQ?Как управлять сообщениями в apache ActiveMQ

ответ

1

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

Для управления сообщениями в брокере ActiveMQ вы должны использовать методы удаления JMX Mamagement API и методы удаления Queue #, которые он предоставляет для удаления определенных сообщений. Это можно сделать, используя идентификатор сообщения или более широко, используя селектор сообщений для сбора более чем одного сообщения, если это необходимо. JMX API также доступен через Jolokia, чтобы вы могли управлять брокером через простые вызовы REST вместо JMX-способа, если хотите.

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

+0

Большое спасибо. После того, как я опубликовал вопрос, я продолжил поиск и пришел к тем же выводам. Спасибо, я не знал, что такое Артемида. Таким образом, решение, которое мы собираемся реализовать, состоит в том, чтобы дождаться, пока сообщение будет потреблено, и обработайте его как отмененное при потреблении. Еще раз спасибо за хороший ответ –

Смежные вопросы