通过node.js / stompit发送数据到ActiveMQ
希望有人可以帮助我在这一个!
任务:发送XML文件到ActiveMQ。
环境:
发展:
- OS X 10.10.5
- 节点4.4.3
- stompit 0.25.0
生产:
- Ubuntu 16.04
- 节点7.8.0(同样的结果也尝试了4.4.3)
- stompit 0.25.0
我总是这样连接。
var server1 = { 'host': 'activemq-1.server.lan' }; var server2 = { 'host': 'activemq-2.server.lan' }; var servers = [server1, server2]; var reconnectOptions = { 'maxReconnects': 10 }; var manager = new stompit.ConnectFailover(servers, reconnectOptions);
标题,我为每个帧设置:
const sendHeaders = { 'destination' : '/queue/name_of_queue', 'content-type' : 'text/plain', 'persistent' : 'true' };
我不允许设置内容长度标题,因为这会强制服务器将stream解释为二进制stream。
当连接到服务器时,我连接到PostgreSQL服务器来获取要发送的数据。
什么工作:
var frame = client.send(sendHeaders); frame.write(row.pim_content); frame.end();
但它只适用于开发机器。 在生产环境中运行此脚本时,脚本运行时不会发生错误,但不会将消息发送到服务器。
所以我尝试了一种不同的方法,只是为了在服务器收到消息时进行callback。
var channel = new stompit.Channel(manager); channel.send(sendHeaders, xml_content, (err)=>{ if(err){ console.log(err); } else { console.log('Message successfully transferred'); } });
现在我得到了相同的生产和开发成果。 它按预期工作,但…
它只有在主体(xml_content)的最大长度为1352个字符时才起作用。 当添加一个额外的字符时,channel.send()的callback将永远不会被触发。
我正在想什么来检查/testing接下来得到的东西工作。 我希望有人读这个,笑,指着我正确的方向。 任何想法非常感谢!
在此先感谢,Stefan