无法使用 STOMP 向 activemq 发送消息

Posted

技术标签:

【中文标题】无法使用 STOMP 向 activemq 发送消息【英文标题】:unable to send message using STOMP to activemq 【发布时间】:2019-09-29 12:15:48 【问题描述】:

我正在尝试使用 STOMP 协议向我的 activemq 发送消息,但我收到以下错误:

(limetray) Vaibhavs-MacBook-Air:Desktop vaibhav$ python receiver_topic.py heyhey
Unknown response frame type: ';activemq' (frame length was 11)
Unknown response frame type: '
                              ' (frame length was 2)
Unknown response frame type: ')' (frame length was 2)
Unknown response frame type: '
                              ' (frame length was 1)
Unknown response frame type: 'tcpnodelayenabled' (frame length was 20)
Unknown response frame type: 'sizeprefixdisabled' (frame length was 20)
Unknown response frame type: '  cachesize' (frame length was 11)
Unknown response frame type: '' (frame length was 1)
Unknown response frame type: '

我正在使用下面的 python 脚本来发送消息:

class MyListener(stomp.ConnectionListener):
    def on_error(self, headers, message):
        print('received an error "%s"' % message)
    def on_message(self, headers, message):
        print('received a message "%s"' % message)
hosts = [('localhost', 61616)]

conn = stomp.Connection(host_and_ports=hosts)
conn.set_listener('', MyListener())
conn.start()
conn.connect('admin', 'admin', wait=True,headers = 'client-id': 'clientname' )
conn.subscribe(destination='A.B.C.D', id=1, ack='auto',headers = 'subscription-type': 'MULTICAST','durable-subscription-name':'someValue')
#conn.subscribe(destination=config['/topic/test'], ack:'auto', 'activemq.subscriptionName':'SampleSubscription')
#conn.subscribe(destination='/topic/testTopic', ack='auto', headers = 'activemq.subscriptionName': 'myhostname')

conn.send(body=' '.join(sys.argv[1:]), destination='A.B.C.D')

time.sleep(2)
conn.disconnect()

用于调用脚本的命令:

python receiver_topic.py heyhey

我认为需要在 activemq.xml 文件中添加一些内容。对此的任何建议都会非常有帮助。

【问题讨论】:

【参考方案1】:

从所提供的信息来看,您似乎正在连接到代理上的 Openwire 端口,该端口默认为“61616”,而 STOMP 端口通常为“61613”,所以我的建议是检查 STOMP 连接器绑定的端口并确保您连接到那个。

【讨论】:

以上是关于无法使用 STOMP 向 activemq 发送消息的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring WebSocket 向 STOMP 客户端发送错误消息?

如何在 ActiveMQ 中通过 Stomp/JSON 使用 JMS 消息转换

使用 Python+Stomp.py 和 ActiveMQ 发送/接收图像

与 Mule/ActiveMQ 和 C++ Stomp 的客户端通信

ActiveMQ 无法识别 Stomp:传输方案无法识别:[stomp+ssl]

ActiveMQ:Openwire vs AMQP vs Stomp