【问题标题】:Python Stomp connection to ActiveMQ has wrong Topic NamePython Stomp 到 ActiveMQ 的连接有错误的主题名称
【发布时间】:2019-09-01 17:15:20
【问题描述】:

我正在尝试形成一个 Python + Stomp 订阅 ActiveMQ 服务器。我正在针对本地主机上的 ActiveMQ 服务器进行测试。一切似乎都正常,除了主题XYZ 的订阅名称被命名为ActiveMQ.Advisory.Consumer.Queue.XYZ,并且我要连接的队列(由 java 客户端创建)被命名为 only @987654328 @。

有没有办法订阅这个“短”名称队列?

import stomp

QUEUE_NAME='XYZ'

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)

headers = {}
conn = stomp.Connection( )
conn.set_listener('127.0.0.1:61616', MyListener())
conn.start()
conn.connect('admin', 'admin', wait=True)

conn.subscribe(destination=QUEUE_NAME, id=2, ack='auto')

time.sleep(6660)
conn.disconnect()

本地 ActiveMQ 控制台显示“主题”:

而真正的服务器有一个短名称队列:

【问题讨论】:

    标签: python activemq stomp


    【解决方案1】:

    这看起来像是正常的代理行为,以支持“咨询消息”。它不应该对您的应用程序产生任何直接影响。有关详细信息,请参阅ActiveMQ documentation on this subject

    【讨论】:

      【解决方案2】:

      终于回到了这个问题......在阅读了其他一些例子之后,我猜到了一个答案,经过测试,它起作用了(呸!)。以前我可以看到我自己的消息,但目标订阅者(用 java 编写)从未收到我的消息。

      如果要使用当前 stomp 库发送到现有 ActiveMQ 队列,则队列名称需要以 /topic/ 为前缀。例如(根据我的问题)如果你想发送到名为XYZ 的队列,stomp 发送代码需要使用/topic/XYZ 的目的地。 如果这被记录在某处,我找不到它!

      必填代码sn-p:

      import time
      import stomp
      
      MQ_SERVER     = "192.168.1.111"
      MQ_PORT       = 61613
      MQ_USERNAME   = "user"
      MQ_PASSWORD   = "pass"
      MQ_QUEUENAME  = 'XYZ'
      
      conn = stomp.Connection( [( MQ_SERVER, MQ_PORT )] )
      conn.start()
      conn.connect( MQ_USERNAME, MQ_PASSWORD, wait=True )
      
      for i in range( 3 ):
          conn.send( body="Hello World", destination='/topic/'+MQ_QUEUENAME )  # <- HERE
          time.sleep( 1 )
      
      conn.disconnect()
      

      我不确定这是否仅适用于 ActiveMQ 或其他消息系统风格。

      【讨论】:

        猜你喜欢
        • 2015-02-10
        • 2019-01-07
        • 2018-03-27
        • 1970-01-01
        • 2015-07-08
        • 2014-08-21
        • 2020-06-16
        • 2021-09-21
        • 2020-06-09
        相关资源
        最近更新 更多