希望那里有人可以帮我这个!
任务: 将xml文件发送到ActiveMQ。
环境:
开发:
生产:
我总是以这种方式联系。
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'
};
我不允许设置内容长度标头,因为这会强制服务器将流解释为二进制流。
当连接到服务器时,我连接到PostgreSQL服务器以获取要发送的数据。
什么有效:
var frame = client.send(sendHeaders);
frame.write(row.pim_content);
frame.end();
但它只适用于开发机器。在生产环境中运行此脚本时,脚本运行时不会抛出错误,但从不将消息发送到服务器。
所以我尝试了另一种方法,只是在服务器收到消息时进行回调。
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()的回调永远不会被触发。
我已经没有想法接下来要检查/测试什么了。我希望有人在读这个,笑着指着我正确的方向。任何想法都非常感谢!
提前致谢, 斯蒂芬