2
votes

I'm trying to switch from ActiveMQ 5.6 to Apollo 1.5. I have two soft that are exchanging messages, using publish/subscribe on topics.

  • The first one is c++ and use openwire with tcp
  • The second one is Javascript and use stomp with websockets

With ActiveMQ everything worked fine, and the messages I sent could be read and write on both softs, and I didn't changed the clients since.

Now, I send messages from the c++ soft (using openwire), and try to read them with the JS soft, and I get errors. In fact I receive message with header content-type: "protocol/openwire", but I expect stomp.

this is how I configured apollo.xml connector section :

<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>

I also tried with <detect /> in tcp and ws connector, that is supposed to auto detect client protocol, but dosen't work either.

Does someone can help me to figure this out ?

Thank you,


edit :

I found out that I do receive stomp protocol messages, but they are very weirdly formated, and even contains non text char that make stomp.js fail to parse the message and correctly fill the message body.

here are the same message received once from activemq openwire and then apollo openwire in with the same c++ publisher and js subscriber :

activemq

    "MESSAGE
    message-id:ID:myID-61443-1352999572576-0:0:0:0:0
    class:Message.PointToPoint
    destination:/topic/my-topic
    timestamp:1352999626186
    expires:0
    subscription:sub-0
    priority:4

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

apollo

    "MESSAGE
    subscription:sub-0
    destination:
    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; Å??<PointToPoint xmlns="Message" ><SourceId>u_23</SourceId><TargetId>u_75</TargetId></PointToPoint>(class Message.PointToPoint
"

Do you think it could be a problem in Apollo ?

1

1 Answers

2
votes

ActiveMQ 5.6 handles translating the logical OpenWire messages into a text representation for STOMP clients. Apollo, currently does not support that feature yet! :( See:

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

It just takes the full openwire message and uses it as the body of the STOMP message. BTW using binary data in a STOMP message is totally valid as long as the content-length header is properly set.