RabbitMQ延迟跨越地理距离问题

时间:2015-01-08 00:13:09

标签: rabbitmq

我们的情况是,我们在美国东部有一个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)

1 个答案:

答案 0 :(得分:1)

对于这些用例,您应该查看Federation或Shovel。

此页面解释了RabbitMQ提供的每个分布式选项的优缺点:http://www.rabbitmq.com/distributed.html