2

ActiveMQ5.6からApollo1.5に切り替えようとしています。トピックのパブリッシュ/サブスクライブを使用してメッセージを交換する2つのソフトがあります。

  • 最初のものはc++であり、tcpでopenwireを使用します
  • 2つ目はJavascriptで、WebSocketでstompを使用します

ActiveMQを使用すると、すべてが正常に機能し、送信したメッセージは両方のソフトで読み取りと書き込みが可能であり、それ以降、クライアントを変更しませんでした。

ここで、(openwireを使用して)c ++ソフトからメッセージを送信し、JSソフトでそれらを読み取ろうとすると、エラーが発生します。実際、ヘッダーのコンテンツタイプが「protocol / openwire」のメッセージを受け取りますが、stompを期待しています。

これは私がapollo.xmlコネクタセクションを設定した方法です:

<connector id="tcp" bind="tcp://0.0.0.0:61613">
    <openwire max_inactivity_duration="-1" max_inactivity_duration_delay="-1" />
    <stomp max_header_length="10000" die_delay="-1" />
</connector>
<connector id="ws" bind="tcp://0.0.0.0:61623">
    <stomp max_header_length="10000" die_delay="-1" />
</connector>

また、クライアントプロトコルを自動検出することになっているtcpおよびwsコネクタで<detect />を試してみましたが、どちらも機能しません。

誰かが私がこれを理解するのを手伝ってくれる?

ありがとうございました、


編集 :

stompプロトコルメッセージを受信して​​いることがわかりましたが、それらは非常に奇妙な形式であり、stomp.jsがメッセージの解析に失敗してメッセージ本文を正しく埋めることができない非テキスト文字が含まれています。

これは、activemq openwireから一度受信した同じメッセージで、同じc++パブリッシャーとjsサブスクライバーでapolloopenwireを受信します。

activemq

    "メッセージ
    message-id:ID:myID-61443-1352999572576-0:0:0:0:0
    class:Message.PointToPoint
    宛先:/ topic / my-topic
    タイムスタンプ:1352999626186
    有効期限:0
    サブスクリプション:sub-0
    優先度:4

    <PointToPoint xmlns = "Message"> <SourceId> u_23 </ SourceId> <TargetId> u_75 </ TargetId> </ PointToPoint> "

アポロ

    "メッセージ
    サブスクリプション:sub-0
    行き先:
    content-length:331
    content-type:protocol / openwire
    message-id:xps-broker-291

    Eç{#ID:myID-61463-1352999939140-0:0emy-topicn {#ID:myID-61463-1352999939140-0:0; Å??<PointToPointxmlns= "Message"> <SourceId> u_23 </ SourceId> <TargetId> u_75 </ TargetId> </ PointToPoint>(class Message.PointToPoint
「」

アポロで問題になると思いますか?

4

1 に答える 1

2

ActiveMQ 5.6は、論理OpenWireメッセージをSTOMPクライアントのテキスト表現に変換する処理を行います。Apolloは現在、その機能をまだサポートしていません。:( 見る:

https://issues.apache.org/jira/browse/APLO-267

完全なopenwireメッセージを受け取り、それをSTOMPメッセージの本文として使用します。ところで、STOMPメッセージでバイナリデータを使用することは、content-lengthヘッダーが適切に設定されている限り完全に有効です。

于 2012-11-15T18:43:36.157 に答える