我们的情况是,我们在美国东部有一个RabbitMQ节点,生产者在其他区域(爱尔兰,悉尼等).从其他区域排队时,我们看到了巨大的性能命中率.悉尼 - > US-East排队是1s排队的消息,而排队悉尼 - >悉尼是50ms.似乎很多时候花在创建频道和声明队列上.
我们有什么选择来改善绩效?我们可以看看某种分布式RabbitMQ集群,每个地区都有一个节点吗?这对我们有帮助吗?
这是我们用来测试的代码:
var queueConnection = amqp.connect("OUR amqp servers in each region")
var queueName = "test-queue"
var queueMessage = function(message) {
return queueConnection.then(function(conn) {
return conn.createChannel()
}).then(function(ch) {
var queue = ch.assertQueue(queueName, { durable: false });
return queue.then(function() {
ch.sendToQueue(queueName, new Buffer(JSON.stringify(message)), { deliveryMode: true });
return ch.close()
});
})
};
Promise.map(_.range(0, 10), function(item) {
var timedQueueMessage = timely.promise(queueMessage)
return timedQueueMessage({ name: "Dom" }).then(function(res) {
console.log("Completed in " + timedQueueMessage.time + "ms")
})
}, { concurrency: 10 }).done(process.exit)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |