2

私はこれに慣れておらず、このプロトコルについて学んでいます。MQTT に関する wiki を読みながら。最初の行「MQTT[1] は、TCP/IP プロトコルの上で使用するパブリッシュ/サブスクライブ ベースの「軽量」メッセージング プロトコルです。」

これは、MQTT がトピックのみをサポートし、キューをサポートまたは操作しないことを意味しますか?

なぜなら、利用可能なクライアント API (fusesource と paho) でチェックアウトするからです。キューのクライアント API が見つかりません。

4

4 に答える 4

1

ActiveMQ を使用してキューを実装する場合、MQTT はキューをサポートしていません。このリンクを確認してください https://github.com/asantos2000/RabbitMQGozirraStompAndroid

Topicを使用する場合はQUEUE_NAME= /topic/nameof_topicを使用し、Queueを使用する場合は destination 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);

ヘッダーにセレクター名が含まれているメッセージのみを取得します

于 2016-07-21T11:42:52.740 に答える
1

はい、MQTT はトピックのみです。キューのサポートはありません

于 2014-07-03T08:10:09.307 に答える
1

MQTT は、JMS や他の多くのメッセージング システムによるキューを理解していません。MQTT は、パブリッシュおよびサブスクライブできるトピックのみを認識します。

MQTT ブローカーとして ActiveMQ 5.13.1 を使用することになった解決策は、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>

これは私が使用したリファレンスです。

于 2016-02-24T06:44:06.120 に答える