Есть ли очередь поддержки MQTT в ActiveMQ?

Я новичок в этом и узнаю об этом протоколе. Пока читал в вики про MQTT. первая строка "MQTT[1] - это протокол обмена сообщениями" облегченный ", основанный на публикации и подписке, для использования поверх протокола TCP/IP".

Значит ли это, что MQTT поддерживает только тему, а не поддерживает или работает с очередью?

Потому что, даже я проверяю с доступным клиентским API (fusesource и paho). Я не нашел API клиента для очереди.

4 ответа

Решение

ActiveMQ поддерживает MQTT, и вы можете прочитать много здесь:

http://activemq.apache.org/mqtt.html

В последние недели аббревиатура Telemetry Transport в очереди сообщений была изменена в MQ Telemetry Transport, потому что MQTT не имеет концепции очереди!:-)

Как сказал @hardillb, операции публикации и подписки выполняются по темам.

Понятие "очередь" реализуется только в том случае, если вы используете расширенный "чистый сеанс" для ложных функций, что означает, что брокер сохраняет сообщения, опубликованные по теме, где клиент находится в автономном режиме, так что, когда клиент вернется в оперативный режим, он получит Сообщения. Однако эта реализация строго связана с брокером (не обязательно с очередью).

Я написал следующую бесплатную книгу (сфокусированную на технологиях Microsoft), но глава 3 посвящена самому протоколу MQTT.

http://www.embedded101.com/DevelopM2MIoTDevicesEbook.aspx

Паоло.

Да, MQTT является только темой, поддержка очереди отсутствует

MQTT не понимает очередей в соответствии с JMS или многими другими системами обмена сообщениями. MQTT понимает только темы, которые могут быть опубликованы и подписаны.

Решение, которое я пришел к использованию ActiveMQ 5.13.1 в качестве брокера MQTT, заключалось в том, чтобы включить составную тему, в которую клиент MQTT будет отправлять. ActiveMQ будет собирать сообщения, записанные в теме, и записывать их в очередь (или несколько очередей или тем) в соответствии с вашей конфигурацией. Имейте в виду, что в имени темы будут меняться точки на прямые косые черты, например, имя темы в данном примере: LOCAL.EC.T, станет LOCAL/EC/T, Это было верно, по крайней мере, для моей тестовой установки с использованием Eclipse Paho Client MQTTv3 1.0.2, и я считаю, что это деталь реализации MQTT.

Конфигурация ${ACTIVEMQ_HOME}/conf/activemq.xml.

<beans>
    <broker>
        ...
        <destinationInterceptors>
            <virtualDestinationInterceptor>
                <virtualDestinations>
                    <compositeTopic name="LOCAL.EC.T">
                        <forwardTo>
                            <queue physicalName="LOCAL.EC.Q.1" />
                            <queue physicalName="LOCAL.EC.Q.2" />                       
                        </forwardTo>
                    </compositeTopic>
                </virtualDestinations>
            </virtualDestinationInterceptor>
        </destinationInterceptors>
        ...
    </broker>
</beans>

Это ссылка, которую я использовал.

MQTT не поддерживает очередь, если вы хотите реализовать очередь с ActiveMQ, используя протокол STOMP, проверьте эту ссылку https://github.com/asantos2000/RabbitMQGozirraStompAndroid

если вы хотите использовать только что использованную тему QUEUE_NAME = / topic / nameof_topic и если вы хотите использовать целевую очередь, используемую QUEUE_NAME=/queue/nameof_queue

для фильтра сообщений в очереди добавить селекторы

 Map<String,String> header=new HashMap<String, String>();
 header.put("selector","(title = 'selector_name')");
con.subscribe(QUEUE_NAME, new Listener() {
                @Override
                public void message(Map header, String body ) {
                    Log.d(TAG,"onMessage()");
                    Log.d(TAG,"message is " + body);
                    Log.d(TAG,"header is " + header.toString());
                    message = "\n("+ counterReceive +")<-- " + body;
                    myHandler.post(myRunnable);
                    counterReceive++;
                }
            },header);

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

Другие вопросы по тегам