다중 라우팅 키 바인딩 된 큐에 대한 참조가 필요합니다. 당신이 볼
, 나는 큐를 생성하고 난 같은 큐에이 두 바인딩을 가지고 때까지 다시 한번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.
10 배 많이 간다
편집 :
생산
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);
("K1을"QUEUENAME, exchangeName)
channel.queueBind;