栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

RabbitMQ / AMQP:单个队列,同一条消息的多个使用者?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ / AMQP:单个队列,同一条消息的多个使用者?

我可以让每个消费者收到相同的消息吗? 即,两个消费者都收到消息1、2、3、4、5、6?AMQP / RabbitMQ所说的是什么?通常如何配置?

不,如果使用者在同一队列中,则不会。从RabbitMQ的AMQP概念指南中:

重要的是要了解,在AMQP 0-9-1中,消息在使用者之间是负载平衡的。

这似乎暗示 队列中的循环行为是给定的 ,并且不可配置。即,需要单独的队列才能使多个使用者处理相同的消息ID。

通常这样做吗? 我是否应该让交换将消息路由到两个单独的队列中,并由一个使用者使用?

不,不是这样,单个队列/多个使用者,每个使用者处理相同的消息ID是不可能的。让交换将消息路由到两个单独的队列中确实更好。

由于我不需要太复杂的路由,因此 扇出交换机 可以很好地解决这一问题。由于node-
amqp具有“默认交换”的概念,允许您直接将消息发布到连接中,因此我没有过多关注Exchange,但是大多数AMQP消息都发布到了特定的交换中。

这是我的扇出交换,包括发送和接收:

var amqp = require('amqp');var connection = amqp.createConnection({ host: "localhost", port: 5672 });var count = 1;connection.on('ready', function () {  connection.exchange("my_exchange", options={type:'fanout'}, function(exchange) {    var sendMessage = function(exchange, payload) {      console.log('about to publish')      var enpred_payload = JSON.stringify(payload);      exchange.publish('', enpred_payload, {})    }    // Recieve messages    connection.queue("my_queue_name", function(queue){      console.log('Created queue')      queue.bind(exchange, '');       queue.subscribe(function (message) {        console.log('subscribed to queue')        var enpred_payload = unescape(message.data)        var payload = JSON.parse(enpred_payload)        console.log('Recieved a message:')        console.log(payload)      })    })    setInterval( function() {          var test_message = 'TEST '+count      sendMessage(exchange, test_message)        count += 1;    }, 2000)  })})


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号