由于遗留原因,我通过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
答案 0 :(得分:0)
没有看到代理配置,回答有点棘手,但是从错误中我猜你正在尝试将STOMP客户端连接到无法正常运行的OpenWire传输,你需要配置一个STOMP TransportConnector经纪人并将STOMP客户指向那里。
请参阅ActiveMQ STOMP文档。
要为嵌入式代理添加STOMP支持,您可以执行以下操作:
brokerService.addConnector("stomp://0.0.0.0:61613");