java操作RabbitMQ
1、创建虚拟主机、交换机、队列
RabbitMQ提供了自己的管理界面,可以通过管理界面来完成VirtualHost、Exchange、queue的创建。
1.1创建VirtualHost
1.2创建交换机
创建交换机的时候需要指定虚拟主机以及交换机的类型(direct(路由模式)、fanout(广播)、headers、topic)
direct:Exchange通过消息携带的路由键来将消息分发到对应的队列中
fanout:Exchange将消息分发到所有绑定到交换机的队列中
headers:Exchange通过判断消息头的值是否与绑定的值相匹配来分发消息
x-match为any时,消息头的任意一个值匹配就可以满足条件
x-match为all时,消息头的所有值匹配才能满足条件
topic:Exchange将满足路由规则的消息分发到对应的队列
1.3创建队列
创建队列时往往需要绑定到交换机上。
这是我们的虚拟主机以及交换机、队列就创建好了。我们可以使用java来操作。
2、java操作RabbitMQ
2.1导入MQ的依赖
<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.6.0</version></dependency>
2.2创建与MQ的连接
public static Connection getConnection() throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory = new ConnectionFactory();//MQ采用工厂模式来完成连接的创建//2.在工厂对象中设置连接信息(ip,port,virtualhost,username,password)factory.setHost("xxxxxx");//设置MQ安装的服务器ip地址factory.setPort(5672);//设置端口号factory.setVirtualHost("host1");//设置虚拟主机名称//MQ通过用户来管理factory.setUsername("xxxxxx");//设置用户名称factory.setPassword("123456");//设置用户密码//3.通过工厂对象获取连接Connection connection = factory.newConnection();return connection;}
2.3消息生产者发送消息到消息队列
//获取连接Connection connection = MQUtil.getConnection();//mq提供Channel来将处理消息//创建ChannelChannel channel = connection.createChannel();String msg = "hello world";//basicPublish将消息发送到指定的交换机channel.basicPublish("ex3", "a", null, msg.getBytes());//关闭连接channel.close();connection.close();
2.4消息消费者从消息队列中获取消息
//获取与MQ的连接Connection connection = MQUtil.getConnection();//创建ChannelChannel channel = connection.createChannel();//通过basicConsumer方法从指定队列中获取消息,消息生产者会通过ex2交换机中的key值将消息发送到queue6中,因为在创建queue6时绑定到交换机ex3中,指定的路由键为a。//consumer参数是消息接收之后的处理方法channel.basicConsume("queue6",true,consumer);//获取ConsumerConsumer consumer = new DefaultConsumer(channel){//重写handleDelivery方法(这个方法是消息的处理过程)//body参数就是接受到的消息@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {//将消息转换成String类型然后打印String msg = new String(body);System.out.println(msg);}};
3、SpringBoot使用RabbitMQ
3.1导入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>
3.2生产者发送消息
编写配置文件
server:port: 8001
spring:application:name: producerrabbitmq:host: xxxxxx #mq服务器的ip地址port: 5672virtual-host: host3username: xxxxxxpassword: xxxxxx
SpringBoot提供了AmqpTemplate来操作RabbitMQ
//注入AmqpTemplate
private AmqpTemplate amqpTemplate;
//通过converAndSend方法发送消息
String msg = "hello world";
amqpTemplate.converAndSend("ex3","b",msg);
3.3消费者接受消息
编写配置文件
server:port: 8002
spring:application:name: consumerrabbitmq:host: xxxxxx #mq服务器的ip地址port: 5672virtual-host: host3username: xxxxxxpassword: xxxxxx
SpringBoot中提供监听器来监听队列
@RabbitListener注解监听队列
@RabbitHandle注解作用于方法,用来处理消息
@RabbitListener(queues = "queue7")
public class MsgService {@RabbitHandlerpublic void getMsg(String msg){System.out.println(msg);}
}
以上就是java操作RabbitMQ的基本内容。
java操作RabbitMQ相关推荐
- java操作RabbitMQ添加队列、消费队列和三个交换机
https://www.cnblogs.com/mowen120/p/11905211.html 一.发送消息到队列(生产者) 新建一个maven项目,在pom.xml文件加入以下依赖 01 02 0 ...
- HRM人力资源系统-Day07-RabbitMQ java操作
RabbitMQ安装 MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则. RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message ...
- python使用pika操作rabbitmq总结(一)
python 连接操作rabbitMQ 主要是使用pika库 安装: pip install pika==1.0.1 注意: pika 1.x 与 pika 0.x 有一些不同,使用的时候需要看清版本 ...
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- java 操作 redis_java操作Redis
10. java操作Redis 10.1 环境准备 1. 引入依赖 redis.clients jedis 2.9.0 2.创建jedis对象 package org.example; import ...
- HBase安装配置以及Java操作hbase
2019独角兽企业重金招聘Python工程师标准>>> Apache HBase Apache HBase™是Hadoop数据库,是一个分布式,可扩展的大数据存储. 当您需要对大数据 ...
- Python之操作RabbitMQ
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...
- Java操作Kafka执行不成功
使用kafka-clients操作kafka始终不成功,原因不清楚,下面贴出相关代码及配置,请懂得指点一下,谢谢! 环境及依赖 <dependency><groupId>org ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
最新文章
- 1年左右的Java开发经验面试者的心得
- 施工企业项目管理的系统修炼_施工企业项目亏损的11个主观因素
- 有关 alter tablespace begin backup
- python 打包发布网站_Python代码的打包与发布
- HYSBZ - 1050(旅行comf 并查集Java实现)
- Java图形 图像与多媒体基础,十一. 图形、图像与多媒体1.绘图基础
- 作者:宋杰(1980-),男,博士,东北大学软件学院副教授
- Android-蓝牙AVRCP 以及 绝对音量(absolute volume)概述-A2dp-hfp
- 基于微信小程序的课堂考勤系统设计与实现
- 数据可视化大屏案例系列 1
- 正则表达式验证ip是否是内网ip
- 房聚良源系统功能介绍(SpringBoot)
- 使用PDman进行数据库设计
- HMTL基础学习之基础篇
- Windows——打印机错误(操作无法完成(错误 0x000006ba)。本地打印机后台处理程序服务没有运行。请重新启动打印机后台处理程序或重新启动计算机。)解决方案
- java文件服务,苹果相关浏览器文件名乱码而其他例如谷歌浏览器不乱码
- 光荣的史诗—PC Game巨头KOEI发展史
- Spring Cloud的基本认识和使用Spring Cloud的基本教程(山东数漫江湖)
- 计算星期几--C语言
- 六大基酒——朗姆酒的喝法
热门文章
- (转)被讨厌的勇气--目录
- 在html页面填入字符串,\n换行不起作用,怎么办?
- DeskMini310 黑苹果(hackintosh)
- Formal Verification (一) 形式验证的分类、发展、适用场景
- BOOT客户管理系统(详解)
- xtrabackup全量+增量备份
- 教师计算机招聘笔试考什么内容是什么意思,大学计算机教师招聘面试问题和笔试题16套...
- httpd的MPM工作模式
- 红米4a android 9 速度,雷军感叹科技进步速度太快!Redmi 9入门机性能已经相当于骁龙835...
- 关于在多重积分以及曲线曲面积分中对称性的应用