我最近学习了RabbitMQ,希望在我的工作流程中实现它。 (我将用Java实现它)我刚刚完成了所有的教程,很好奇我将如何实现一个"常量"排队而不是"临时"队列。或者至少允许消费者获得交易所发送的消息。例如,如果我发送" kern.overflow"但只要消费者上网,只要正在倾听与凯恩相关的事情,消费者就会离线。#"或"#。溢出"我希望它能收到未收到的消息。
答案 0 :(得分:0)
以下是代码:
"kern.#"
作为路由键:代码:
String myPersistentQueue = "myPersistentQueue";
boolean isDurable = true;
boolean isExclusive = false;
boolean isAutoDelete = false;
channel.queueDeclare(myPersistentQueue, isDurable, isExclusive, isAutoDelete, null);
channel.queueBind(myPersistentQueue, "myTopic", "kern.#");
final QueueingConsumer consumer = new QueueingConsumer(channel);
boolean autoAck = true;
String tag1 = channel.basicConsume(myPersistentQueue, 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");
使用myTopic
作为路由密钥将消息发布到kern.overflow
时,消息将存储到myPersistentQueue
队列。客户端可以脱机,当客户端在线时可以获取消息。