2
我需要一個參考請多個路由鍵綁定隊列。
你看,我創建了一個隊列,並與Rabbitmq - 多個綁定(路由鍵)到單個隊列
channel.queuebind()
和另一個時間再次
channel.queuebind()
綁定一次,直到我上了同一個隊列這兩個綁定。
但發佈後 - 只有第一個有界的消息被成功傳輸。
(我甚至取代了訂單,仍然 - 只有第一個,所以我的發佈是好的)
我沒有做的 - 是定義一個新的訂戶channel.basicConsumer。
我應該這樣做嗎?我想讓老款手機獲得更多信息。我做錯了什麼?
這裏是我的隊列列表是
你可以看到amq.gen-4ae4QUbSNevC/RgM + 8C9CA ==綁定了兩個鍵。
但消息只能進入第一個關鍵
Listing queues ...
amq.gen-4ae4QUbSNevC/RgM+8C9CA== 0
amq.gen-sgZK0bSc0W3QEXda8m1vIQ== 0
PositionsQueue 1
...done.
rabbitmqctl.bat list_bindings
Listing bindings ...
exchange PositionsQueue queue PositionsQueue []
exchange amq.gen-4ae4QUbSNevC/RgM+8C9CA== queue amq.gen-4ae4QUbSNevC/RgM+8C9CA==
exchange amq.gen-sgZK0bSc0W3QEXda8m1vIQ== queue amq.gen- sgZK0bSc0W3QEXda8m1vIQ==
Positions_Exchange exchange amq.gen-4ae4QUbSNevC/RgM+8C9CA== queue Account:Account1
Positions_Exchange exchange amq.gen-4ae4QUbSNevC/RgM+8C9CA== queue Portfolio:Portfolio1
...done.
10X很多
編輯:
生產
channel.basicPublish(exchangeName, routingKey, MessageProperties.MINIMAL_BASIC, messageBodyBytes);
消費者
channel.exchangeDeclare(exchangeName, "direct", durable);
QueueName = channel.queueDeclare(queueName, durable, exclusive, autoDelete, arguments).getQueue();
channel.queueBind(queueName, exchangeName, routingKey);
boolean noAck = false;
queueingConsumer = new QueueingConsumer(channel);
channel.basicConsume(queueName, noAck, queueingConsumer);