通过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