use*_*253 9 queue rabbitmq consumer
QueueingConsumer consumer = new QueueingConsumer(channel);
System.out.println(consumer.getConsumerTag());
channel.basicConsume("queue1", consumer);
channel.basicConsume("queue3", consumer);
Run Code Online (Sandbox Code Playgroud)
是否可以动态地单独停止从队列"queue3"中消费消息?
Gab*_*ele 23
是的,你可以,使用channel.basicCancel(consumerTag);
EDIT
例如:
String tag3 = channel.basicConsume("queue3", consumer);
channel.basicCancel(tag3)
Run Code Online (Sandbox Code Playgroud)
在这里,您可以找到在5秒后取消订阅消费者的代码:
String tag1 = channel.basicConsume(myQueue, autoAck, consumer);
String tag2 = channel.basicConsume(myQueue2, autoAck, consumer);
executorService.execute(new Runnable() {
@Override
public void run() {
while (true) {
Delivery delivery;
try {
delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println("Received: " + message);
} catch (Exception ex) {
Logger.getLogger(TestMng.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
System.out.println("Consumers Ready");
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
Logger.getLogger(TestMng.class.getName()).log(Level.SEVERE, null, ex);
}
channel.basicCancel(tag2); /// here you remove only the Myqueue2
Run Code Online (Sandbox Code Playgroud)
我希望它有用.
| 归档时间: |
|
| 查看次数: |
15557 次 |
| 最近记录: |