Description
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: encoding CONNECT frame
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: H passcode:
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: H accept-version:1.0,1.1,1.2
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: H host:bismuth31.nyc
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: H login:
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: sent 73 bytes
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: received 123 bytes
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: decoding CONNECTED frame
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: H server:ActiveMQ/5.11.1
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: H heart-beat:0,0
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: H session:ID:bismuth31.nyc-47753-1442302511794-1:3
- 2015/09/15-03:35:13 stomp_producer.pl[29263.0]: H version:1.2
[20150915 03:35:13.507 Net::Stomp::connect():332 WARN] Error while connecting to the message broker: invalid header: session:ID:bismuth31.nyc-47753-1442302511794-1:3
This is happening because session header contains ':' in its value which fails the check when using STOMPv1.1 protocol.
ActiveMQ generates a default client id if one is not provided at the start and uses that to set session-id. But the session header cannot contain ':'.
(https://github.com/apache/activemq/blob/138e52b08c2f49b730817932a6e63f2a135854f1/activemq-client/src/main/java/org/apache/activemq/util/IdGenerator.java and https://github.com/apache/activemq/blob/87fd0a9e054017254c3857b245ca6fb9047ccc4f/activemq-stomp/src/main/java/org/apache/activemq/transport/stomp/ProtocolConverter.java#L797)
We can use generateSanitizedId() here to avoid this issue(https://github.com/apache/activemq/blob/87fd0a9e054017254c3857b245ca6fb9047ccc4f/activemq-stomp/src/main/java/org/apache/activemq/transport/stomp/ProtocolConverter.java#L797)