凉月如眉挂柳湾,越中山色镜中看
序
介绍一个RabbitMQ官方发布和消费消息的例子。官方例子
生产消息
public class RabbitProducer {
//队列名
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
//连接MQ
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
//定义队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
//发布消息
channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
System.out.println(" [x] Sent '" + message + "'");
}
}
}
消息生产之后,我们可以在RabbitMQ的管理管理平台上可见。
点击队列名进去之后,点击Get Message(s)按钮,就可以看到消息。
消费消息
public class RabbitComsumer {
//队列名
private final static String QUEUE_NAME = "hello";
public static void main(String[] args) throws IOException, TimeoutException {
//连接MQ
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
//定义队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
//接收消息
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println(" [x] Received '" + message + "'");
};
//消费消息
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
}
}
消息被消费之后,管理平台上就看不到消息了。