首先,我知道已經有類似問題here的答案,但我仍然不確定這是因爲RabbitMQ的不可能性還是因爲我的避風港沒有足夠的研究。多位消費者如何在RabbitMQ中訂閱相同的主題並獲取相同的消息
我來自JS/Node背景,其中事件發佈/訂閱模式的工作方式如下:當許多消費者使用發佈/訂閱模式訂閱同一主題時,只要某個發佈者發佈該消息,他們都應該獲得相同的消息。
我期望與消息代理實現相同的模式。
例如:
消費者1監聽'request.user.#'
消費者2偵聽'request.user.#'
消費者3監聽'request.#.#'
生產者1發佈到主題'request.user.add'
生產者2發佈到主題'request.user.detail'
實際上並(根據該RabbitMQ example about Topics)
Consumer 3
得到兩個消息什麼RabbitMQ的,而無論是Consumer 1
或Consumer 2
獲取第一消息,並且只有他們中的任何一個都得到第二條消息
我希望實現
三他們得到兩個消息。
你有什麼想法通過消息代理(RabbitMQ中的最高優先級)來實現嗎?請指出我是否錯過了一些東西,或者在我的問題的某處不清楚。
在此先感謝。
編輯與解決方案:
感謝@cantSleepNow,這裏是我想出了他的暗示後Consumer 1
和Consumer 2
代碼(的NodeJS):
var amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', (err, conn) => {
conn.createChannel((err, ch) => {
var ex = 'topic_exchange'; // Exchange name
ch.assertExchange(ex, 'topic'); // Exchange with 'topic' type
ch.assertQueue('', {exclusive: true}, (err, q) => {
ch.bindQueue(q.queue, ex, 'request.user.#'); // Topic pattern
ch.consume(q.queue, (msg) => {
// Process message
});
});
});
});
是RabbitMQ您的「解決方案」的必要組成部分?因爲這是麪包和黃油Mosquitto –
@JaromandaX我願意接受所有建議,並會試一試,我只是對RabbitMQ更感興趣。 – hirikarate