我成功地配置了一个通过MQTT插件支持MQTT的RabbitMQ集群。目前,MQTT消息传递一个与工作队列绑定的主题交换。因此,所有MQTT消息都存储在这个工作队列中。
现在,我想通过研究RabbitMQ管理插件中的图表来测试这个集群的输入性能。我的计划是在一个for循环中设置2个NodeJS MQTT发布者,触发许多MQTT消息,但这失败了。
当for循环运行超过3000次时,并不是所有的消息都存活下来.(在下面找到我的测试代码)我想听听你对此的看法:
代码:
var quantity = 3000;
var mqtt = require('mqtt');
var options = {
host: 'localhost',
port: 1883,
protocolId: 'MQIsdp',
rejectUnauthorized: false,
protocolId: 'MQIsdp',
protocolVersion: 3
};
var client = mqtt.connect(options);
for(var x=0; x<quantity; x++)
{
client.publish('/WSN/N536,563E/dynamic',"22");
console.log(x);
}
client.end();发布于 2018-01-06 11:35:45
消息正在打包到流套接字中,而实际的数据字节位于路径上:您的代码=>客户端的内存缓冲区=>发送系统套接字缓冲区=>系统套接字缓冲区=>服务器的代码。
如果使用localhost,则3K消息的套接字缓冲区的可能性很小,但确实存在。
我不太熟悉mqqt客户端,但是如果它使用套接字关闭操作执行client.end()操作,则可能有些mqtt帧根本无法到达您的服务器。
您有一些测试选项,例如:
client.end()之前睡一会儿,只睡一会儿;https://stackoverflow.com/questions/30412272
复制相似问题