我正在尝试从rabbitmq队列中检索响应,在第一次使用相同的代码时,我能够正确地检索响应,但每当我第二次或第三次运行它时,它都不会调用我试图检索响应的delivercallback函数
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println(" [x] Received '" + message + "'");
};
boolean autoAck = true; // acknowledgment is covered below
channel.basicConsume(QUEUE_NAME, autoAck, deliverCallback, consumerTag -> { });期望的:响应应该被打印出来,它在DeliverCallbackλ表达式中。实际:未调用DeliverCallback lambda表达式这就是我无法从rabbitmq队列检索响应的原因
发布于 2021-03-22 01:48:59
发回确认消息将消息从队列中移除,因此当消费者应用程序第二次和第三次被触发时,消息是不可检索的。
发布于 2019-09-19 14:20:46
试试这个:
private static void LogMsg(String msg) {
System.out.println(msg);
}
// ...
DeliverCallback deliverCallback = new DeliverCallback() {
public void handle(String s, Delivery delivery) throws IOException {
LogMsg("s - "+s);
LogMsg("Tag: "+delivery.getEnvelope().getDeliveryTag());
String message = new String(delivery.getBody(), "UTF-8");
LogMsg(message);
}
};
channel.basicConsume(queueName, true, deliverCallback, new CancelCallback() {
public void handle(String consumerTag) throws IOException {
}
});https://stackoverflow.com/questions/56897478
复制相似问题