RabbitMQ ---- Hello World
- 1. 依赖
- 2. 消息生产者
- 3. 信息消费者
本节使用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者。
1. 依赖
<!--指定 jdk 编译版本--><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build><dependencies><!--rabbitmq 依赖客户端--><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0</version></dependency><!--操作文件流的一个依赖--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency></dependencies>
2. 消息生产者
/*** 生产者* @author dell* @date 2023/7/6 10:52*/public class Produce {private final static String QUEUE_NAME = "hello";public static void main(String[] args) throws IOException, TimeoutException {// 创建一个连接工厂ConnectionFactory factory = new ConnectionFactory();factory.setHost("192.168.10.100");factory.setUsername("admin");factory.setPassword("123");// channel 实现了自动 close 接口 自动关闭,不需要显示关闭Connection connection = factory.newConnection();Channel channel = connection.createChannel();/*** 生成一个队列* 1. 队列名称* 2. 队列里面的消息是否持久化 默认消息存储在内存中* 3. 该队列是否只提供一个消费者进行消费 是否进行共享 true 可以多个消费者消费* 4. 是否自动删除 最后一个消费者断开连接以后 该队列是否自动删除 true 自动删除* 5. 其他参数*/channel.queueDeclare(QUEUE_NAME, false, false, false, null);String message = "hello world";/*** 发送一个消息* 1. 发送到哪个交换机* 2. 路由的 key 是哪个* 3. 其他的参数信息* 4. 发送消息的消息体*/channel.basicPublish("", QUEUE_NAME, null, message.getBytes());System.out.println("消息发送完毕");}}
运行程序
查看管理页面
3. 信息消费者
/*** 消费者* @author dell* @date 2023/7/6 11:09*/public class Consumer {private final static String QUEUE_NAME = "hello";public static void main(String[] args) throws IOException, TimeoutException {// 创建一个连接工厂ConnectionFactory factory = new ConnectionFactory();factory.setHost("192.168.10.100");factory.setUsername("admin");factory.setPassword("123");// channel 实现了自动 close 接口 自动关闭,不需要显示关闭Connection connection = factory.newConnection();Channel channel = connection.createChannel();System.out.println("等待接收消息......");// 推送的消息如何进行消费的接口回调DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody());System.out.println(message);};// 取消消费的一个回调接口 如在消费的时候队列被删除了CancelCallback cancelCallback = (consumerTag) -> {System.out.println("消息消费被中断");};/*** 消费者消费消息* 1. 消费哪个队列* 2. 消费成功之后是否咬自动应答 true 自动应答 false 手动应答* 3. 消费者未成功消费的回调* 4. 消费者取消消息的回调*/channel.basicConsume(QUEUE_NAME, true, deliverCallback, cancelCallback);}}