【问题标题】:ActiveMQ Java Broker, Python ClientActiveMQ Java 代理,Python 客户端
【发布时间】:2017-02-21 17:45:44
【问题描述】:

由于遗留原因,我在 vanilla tcp 传输协议上使用了 Broker/Publisher 的 Java activeMQ 实现。我希望将 Python 客户端连接到它,但是所有基于“stomp”的文档似乎都没有它,而不是通过 stomp 协议,当我尝试基本示例时,我在 Java Broker 方面得到了错误:

[ActiveMQ Transport: tcp:///127.0.0.1:62860@5001] WARN org.apache.activemq.broker.TransportConnection.Transport - Transport Connection to: tcp://127.0.0.1:62860 failed: java.io.IOException: Unknown data type: 80

Broker 代码在 Java 中非常普通:

    String localVMurl = "vm://localhost";
    String remoterURL = "tcp://localhost:5001";
    BrokerService broker = new BrokerService();
    broker.addConnector(localVMurl); 
    broker.addConnector(remoterURL);
    broker.setAdvisorySupport(true);
    broker.start();


    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(localVMurl+"?create=false");
    Connection connection = connectionFactory.createConnection();

Python 就失败了。仅使用来自 Python 的基本“tcp://localhost:”连接,我似乎无法在网上找到任何东西。我在这里做错了吗?

import stomp

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)

    conn = stomp.Connection(host_and_ports = [('localhost', 5001)])
    conn.start()
    conn.connect('admin', 'password', wait=True)

我得到了错误:

IndexError: list index out of range

【问题讨论】:

    标签: java python tcp activemq stomp


    【解决方案1】:

    在没有看到代理配置的情况下,回答起来有点棘手,但从错误中我猜您正在尝试将 STOMP 客户端连接到不起作用的 OpenWire 传输,您需要配置一个 STOMP TransportConnector代理并将 STOMP 客户端指向那里。

    请参阅ActiveMQ STOMP 文档。

    要为嵌入式代理添加 STOMP 支持,您需要执行以下操作:

    brokerService.addConnector("stomp://0.0.0.0:61613");
    

    【讨论】:

    • 您需要知道的一切都在文档中。将 STOMP 传输添加到代理并将您的 STOMP 客户端指向该端点。
    猜你喜欢
    • 2023-03-13
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2021-02-11
    • 2013-09-06
    • 1970-01-01
    • 2017-12-06
    相关资源
    最近更新 更多