想知道rabbitmq的多个发布者和消费者的行为。rabbitmq服务器是否一次给一个消费者一条消息,而其他消费者在那个时候是理想的?或使用者从队列中挑选任何无人参与的消息,以便同时有多个使用者使用队列中的消息?基本上,我正在设计一个数据库队列,并且不希望一次插入多个数据。
cwxwcias1#
队列中的消息将只传递给一个使用者。即:一旦消息到达队列-它将不会被复制(广播)到多个使用者。如果你想做广播-你必须使用多个队列。有关详细信息,请参阅本教程:http://www.rabbitmq.com/tutorial-two-python.html
mepcadol2#
是,RabitMQ支持多个发布者和使用者。1.多个发布者为了发布一个消息到rabbitmq,你需要声明一个工厂并连接到rabbitmq服务器。
ConnectionFactory FACTORY = new ConnectionFactory
FACTORY. set用户名(“访客”)FACTORY. set密码(“访客”)设置虚拟主机(“\”)出厂设置端口(5572)设置主机(“本地主机”)连接连接=FACTORY.newConnection通道通道=连接.createChannel路由消息基本关键字是路由关键字
channel.basicPublish(EXCHANGE_NAME, "Queue1", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg1".getBytes) channel.basicPublish(EXCHANGE_NAME, "Queue2", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg2".getBytes)
这两个消息将按照路由关键字发布到单独的队列,如queue1和queue2所示2.多个消费者对于多个消费者,我们声明一个队列并绑定到一个特定的路由关键字,该路由关键字的消息将被发布到相应的队列。
channel.exchangeDeclare(EXCHANGE_NAME, "direct", durable) channel.queueDeclare("q1", durable, false, false, null) channel queueBind ("q1", EXCHANGE_NAME,"queue1")// routing key = "queue1" val q1Consumer = new QueueingConsumer(channel) channel basicConsume ("q1", false, q1Consumer)
这样,u可以使用来自第一队列的消息,同样的,第二队列也可以使用,但是将路由关键字指定为“queue2”
channel.exchangeDeclare(EXCHANGE_NAME, "direct", durable) channel.queueDeclare("q2", durable, false, false, null) channel queueBind ("q2", EXCHANGE_NAME,"queue2") // routing key = "queue2" val q2Consumer = new QueueingConsumer(channel) channel basicConsume ("q2", false, q2Consumer)
2条答案
按热度按时间cwxwcias1#
队列中的消息将只传递给一个使用者。即:一旦消息到达队列-它将不会被复制(广播)到多个使用者。
如果你想做广播-你必须使用多个队列。
有关详细信息,请参阅本教程:http://www.rabbitmq.com/tutorial-two-python.html
mepcadol2#
是,RabitMQ支持多个发布者和使用者。
1.多个发布者
为了发布一个消息到rabbitmq,你需要声明一个工厂并连接到rabbitmq服务器。
FACTORY. set用户名(“访客”)
FACTORY. set密码(“访客”)
设置虚拟主机(“\”)
出厂设置端口(5572)
设置主机(“本地主机”)
连接连接=FACTORY.newConnection通道通道=连接.createChannel
路由消息基本关键字是路由关键字
这两个消息将按照路由关键字发布到单独的队列,如queue1和queue2所示
2.多个消费者
对于多个消费者,我们声明一个队列并绑定到一个特定的路由关键字,该路由关键字的消息将被发布到相应的队列。
这样,u可以使用来自第一队列的消息,同样的,第二队列也可以使用,但是将路由关键字指定为“queue2”