【RabbitMQ】四、Java中整合RabbitMQ的使用
发布日期:2021-06-30 21:30:04
浏览次数:3
分类:技术文章
本文共 3777 字,大约阅读时间需要 12 分钟。
本次,我们以IDEA + SpringBoot作为 Java中整合Redis的使用 的测试环境,如果对创建SpringBoot项目有不清楚的地方,可以参考我的博客:。
- 一、引入 MQ 的依赖
org.springframework.boot spring-boot-starter-amqp com.rabbitmq amqp-client
- 二、配置文件中写入 MQ 的配置信息
#rabbitmq 配置信息spring: rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest
- 三、创建生产者
package com.zyxx.rabbitmq.entity;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;/** * @ClassName producer * 生产者 * @Author Lizhou * @Date 2019-08-02 9:54:54 * @Version 1.0 **/public class ProducerTest { public static void main(String[] args) { // 创建一个连接工厂,用于生成与RabbitMQ进行连接 ConnectionFactory factory = new ConnectionFactory(); // 根据这个连接工厂设置RabbitMQ所在的主机,账号密码和端口号等(默认情况下就不需要账号密码和端口了) factory.setHost(MqEntity.HOST); factory.setUsername(MqEntity.USERNAME); factory.setPassword(MqEntity.PASSWORD); try { // 由连接工厂生成与RabbitMQ的连接 Connection connection = factory.newConnection(); // 创建一条通道 Channel newChannel = connection.createChannel(); // 由这个通道声明一个队列 newChannel.queueDeclare(MqEntity.QUEUENAME, false, false, true, null); // 要发送的消息 String sendMessage = "Hello,我是生产者!!!"; newChannel.basicPublish(MqEntity.EXCHANGE_NAME, MqEntity.QUEUENAME, null, sendMessage.getBytes()); System.out.println("消息发送成功!!!"); // 关闭通道 newChannel.close(); // 关闭连接 connection.close(); } catch (Exception e) { e.printStackTrace(); } }}
- 四、创建消费者
package com.zyxx.test;import com.rabbitmq.client.*;import java.io.IOException;/** * @ClassName Consumer * 消费者 * @Author Lizhou * @Date 2019-08-02 9:57:57 * @Version 1.0 **/public class ConsumerTest { public static void main(String[] args) { // 创建一个连接工厂,用于生成与RabbitMQ进行连接 ConnectionFactory factory=new ConnectionFactory(); // 根据这个连接工厂设置RabbitMQ所在的主机,账号密码和端口号等(默认情况下就不需要账号密码和端口了) factory.setHost(MqEntity.HOST); factory.setUsername(MqEntity.USERNAME); factory.setPassword(MqEntity.PASSWORD); Connection connection; try { // 创建一条通道,通道创建好后,关联相关的队列 connection = factory.newConnection(); Channel newChannel = connection.createChannel(); newChannel.queueDeclare(MqEntity.QUEUENAME, false, false, true, null); Consumer consumer = new DefaultConsumer(newChannel){ // 重写handleDelivery方法 @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String getMessage = new String(body, "UTF-8"); System.out.println("接收到消息:'" + getMessage + "'"); } }; // 自动回复队列应答 -- RabbitMQ中的消息确认机制 newChannel.basicConsume(MqEntity.QUEUENAME, true, consumer); } catch (Exception e) { e.printStackTrace(); } }}
- 五、创建 MQ 配置类
package com.zyxx.test;/** * @author lizhou * @date 2019-08-02 */public final class MqEntity { /** * 队列名称 */ public final static String QUEUENAME="mq.test_queu1"; /** * 主机名 */ public final static String HOST="localhost"; /** * 用户名 */ public final static String USERNAME="guest"; /** * 密码 */ public final static String PASSWORD="guest"; /** * 交换机名 */ public final static String EXCHANGE_NAME="";}
- 六、启动生产者,发送消息
消息发送成功!!!
- 七、启动消费者,接收消息
接收到消息:‘Hello,我是生产者!!!’
最后,你还可以创建两个 SpringBoot 项目,一边用来发,一边用来收,可实现实时通信。
如您在阅读中发现不足,欢迎留言!!!
转载地址:https://lizhou.blog.csdn.net/article/details/98873964 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月15日 19时31分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
URL特殊字符转码
2019-05-01
为什么接口需要加密传输
2019-05-01
对称加密整个过程
2019-05-01
java内存模型
2019-05-01
volatile关键字
2019-05-01
HTTP_概述
2019-05-01
web相关概念回顾
2019-05-01
web服务器软件_概述
2019-05-01
tomcat_安装&卸载&启动
2019-05-01
tomcat_启动问题分析
2019-05-01
tomcat_关闭
2019-05-01
tomcat_部署项目的方式
2019-05-01
tomcat_动态java项目的目录结构
2019-05-01
Servlet_概述
2019-05-01
Servlet_快速入门
2019-05-01
Servlet_执行原理
2019-05-01
Servlet_生命周期方法
2019-05-01
Servlet_生命周期详解
2019-05-01
Servlet_3.0注解配置
2019-05-01
IDEA与tomcat相关配置
2019-05-01