Мне нужна ссылка на очередь с привязкой нескольких ключей маршрутизации.
Видите ли, я создал очередь и связал ее один раз с
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);