RabbitMQ ---- Hello World
本节使用 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
*/publicclassProduce{privatefinalstaticStringQUEUE_NAME="hello";publicstaticvoidmain(String[] args)throwsIOException,TimeoutException{// 创建一个连接工厂ConnectionFactory factory =newConnectionFactory();
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
*/publicclassConsumer{privatefinalstaticStringQUEUE_NAME="hello";publicstaticvoidmain(String[] args)throwsIOException,TimeoutException{// 创建一个连接工厂ConnectionFactory factory =newConnectionFactory();
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 =newString(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);}}
本文转载自: https://blog.csdn.net/qq_52354698/article/details/131571032
版权归原作者 在人间负债^ 所有, 如有侵权,请联系我们删除。
版权归原作者 在人间负债^ 所有, 如有侵权,请联系我们删除。