Wildfly 18, MQTT и групповые подписки - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь запустить MQTT-акцептор в Apache Artemis сервера Wildfly 18.

Сервер работает, я даже могу отправлять сообщения в определенную тему (хотя она должна быть определена).

Изначально мне нужно было добавить разрешение create-durable-queue="true" к безопасности, иначе, как только я попытаюсь подписаться на эту тему, сервер прервет связь.

При этом япопытайтесь выяснить, как я могу создать на стороне JMS подписку на тему с подстановочными знаками, и я не могу найти ни текущей документации, ни какой-либо другой информации об этом.

Чтобы дать некоторую предысторию для случая использования:

Я хочу использовать встроенный сервер Artemis в Wildfly 18 и иметь несколько устройств, которые публикуют такие темы, как /device/reader/SOMEID/temperature и аналогичные.

В моих EJB-компонентах я хочу подписаться наtopic /device/# и получите все сообщения для этой темы и всех подтем.

Как мне этого достичь?

Также, когда моя запись в конфигурации

<jms-topic name="TestTopic" entries="java:/jms/topic/TestTopic" />

Почему тогда тема MQTT jms/topic/TestTopic? Я не рад использованию префикса там.

1 Ответ

2 голосов
/ 28 октября 2019

Сервер работает, я даже могу отправлять сообщения в определенную тему (хотя она должна быть определена).

Если вы используете true для auto-create-addresses address-setting тогда тема (т. Е. Адрес) должна создаваться автоматически для вас, когда вы отправляете ему сообщение или создаете на него подписку.

Изначально мне нужно было добавить разрешение на создание. -durable-queue = "true" для безопасности, в противном случае, как только я попытаюсь подписаться на эту тему, сервер прервет связь.

Это ожидается, поскольку разрешение create-durable-queueне устанавливается по умолчанию.

Если вы хотите, чтобы ваш подписчик тем JMS получал все сообщения, отправленные на определенный набор адресов, просто укажите нужный подстановочный адрес в определении jms-topic в конфигурации сервера или в настройках сервера. код. Вы можете найти последнюю документацию по этой теме для ActiveMQ Artemis здесь и пример ее использования здесь .

Почему тема MQTT тогда jms/ тема / TestTopic? Я не доволен использованием префикса там.

К сожалению, префикс не является обязательным в Wildfly для исторических проблем обратной совместимости. Кроме того, хотя для встроенного экземпляра ActiveMQ Artemis технически возможно обслуживать не-JMS-клиентов, встроенный брокер действительно предназначен для реализации JMS, как того требует Java EE. У вас будет больше гибкости (т.е. возможность не использовать вышеупомянутый префикс), если вы запустите ActiveMQ Artemis standalone.

...