这可能是我遗漏的一些愚蠢错误,但问题在于:
我正在尝试使用预定义的交换和路由密钥将简单的“hello”消息插入Rabbit队列。 这是我正在使用的代码:
private static void send_equity_task_to_rabbitmq(ConnectionFactory factory) throws IOException,TimeoutException{
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare("b", false, false, false, null);
channel.exchangeDeclare("b", "direct");
channel.basicPublish("b","b",null, "hello".getBytes());
channel.close();
connection.close();
}
public static void main(String[] argv) throws TimeoutException,IOException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
Date start_time= Calendar.getInstance().getTime();
Long start_time_timestamp=System.currentTimeMillis();
System.out.println("[INFO] Starting connection to queue at:"+start_time);
send_equity_task_to_rabbitmq(factory);
Long end_time_timestamp=System.currentTimeMillis();
System.out.println("[INFO] Message sent and processed successfully after:"+ (end_time_timestamp-start_time_timestamp)+" miliseconds");
}
}
代码运行时没有任何错误。但是,当我检查“b”队列中的记录数量时,我得到:
$ rabbitmqctl list_queues
Listing queues ...
b 0
...done.
我目前没有此队列的消费者,所以我假设它有0条记录,我正在使用basicPublish。 可能有什么不对?
谢谢。
答案 0 :(得分:2)
我认为你需要将队列绑定到交换机。您已经创建了一个名为“b”的队列和一个名为“b”的交换。交换将使用“b”routingKey将消息分发到绑定到它的队列,但由于“b”队列未绑定到“b”交换,“b”交换不会发布到该队列