这是 RabbitMQ 实战指南里面的一个 mandatory 参数介绍,详见 pg56,我开启 mandatory 参数为 true 后无法进入返回确认监听器。参考了搜索引擎的其他 demo,发现依旧无效。
没有将交换器和队列绑定,没有设置路由 key,生产者应该没有被正确路由到合适的队列。为什么会无法进入监听器的?
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.0.1</version>
</dependency>
public static void main(String[] args) throws IOException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("x.x.x.x");
factory.setPort(5672);
factory.setUsername("root");
factory.setPassword("root");
// 创建连接
Connection connection = factory.newConnection();
// 创建信道
Channel channel = connection.createChannel();
// 发送一条持久化的消息
String message = "Hello world6666";
channel.basicPublish("normalExchange", "", true, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());
System.out.println("----------------");
channel.addReturnListener(new ReturnListener() {
// 无法进入确认监听器
@Override
public void handleReturn(int i, String s, String s1, String s2, AMQP.BasicProperties basicProperties, byte[] bytes) throws IOException {
String string = new String(bytes);
System.out.println(string);
}
});
// 关闭资源
channel.close();
connection.close();
}
图一
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.