ActiveMQ Java Broker,Python客户端

时间:2016-10-12 19:26:42

标签: java python tcp activemq stomp

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

[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

1 个答案:

答案 0 :(得分:0)

没有看到代理配置,回答有点棘手,但是从错误中我猜你正在尝试将STOMP客户端连接到无法正常运行的OpenWire传输,你需要配置一个STOMP TransportConnector经纪人并将STOMP客户指向那里。

请参阅ActiveMQ STOMP文档。

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

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