ConfirmListener为何没有消息确认的时候,也会触发handleAck方法的执行
public class Test {
public static void main( String[] args ) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
factory.setPort(5672);
factory.setUsername("guest");
factory.setPassword("guest");
factory.setVirtualHost("/");
Connection conn = factory.newConnection();
Channel channel = conn.createChannel();
channel.confirmSelect();
channel.addConfirmListener(new ConfirmListener() {
public void handleAck(long deliveryTag, boolean multiple) throws IOException {
System.out.println("=============handleAck============");
System.out.println("deliveryTag : " + deliveryTag);
}
public void handleNack(long deliveryTag, boolean multiple) throws IOException {
System.out.println("=============handleNack============");
System.out.println("deliveryTag : " + deliveryTag);
}
});
BasicProperties props = new BasicProperties.Builder().deliveryMode(2).contentEncoding("UTF-8").build();
channel.basicPublish("", "test.queue", props, "test".getBytes());
TimeUnit.SECONDS.sleep(10);
channel.close();
conn.close();
}
}
这段代码,是往test.queue上发送一个消息。当前test.queue上没有任何消费者。
但是为啥执行这段代码,就会触发handleAck方法的执行呢?
又没有消费者去确认消息,怎么会触发handleAck方法的执行呢?
求答疑。
RabbitMQ版本为3.6.10