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 「」
アポロで問題になると思いますか?