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相关推荐

  1. java操作RabbitMQ添加队列、消费队列和三个交换机

    https://www.cnblogs.com/mowen120/p/11905211.html 一.发送消息到队列(生产者) 新建一个maven项目,在pom.xml文件加入以下依赖 01 02 0 ...

  2. HRM人力资源系统-Day07-RabbitMQ java操作

    RabbitMQ安装 MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则. RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message ...

  3. python使用pika操作rabbitmq总结(一)

    python 连接操作rabbitMQ 主要是使用pika库 安装: pip install pika==1.0.1 注意: pika 1.x 与 pika 0.x 有一些不同,使用的时候需要看清版本 ...

  4. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  5. java 操作 redis_java操作Redis

    10. java操作Redis 10.1 环境准备 1. 引入依赖 redis.clients jedis 2.9.0 2.创建jedis对象 package org.example; import ...

  6. HBase安装配置以及Java操作hbase

    2019独角兽企业重金招聘Python工程师标准>>> Apache HBase Apache HBase™是Hadoop数据库,是一个分布式,可扩展的大数据存储. 当您需要对大数据 ...

  7. Python之操作RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...

  8. Java操作Kafka执行不成功

    使用kafka-clients操作kafka始终不成功,原因不清楚,下面贴出相关代码及配置,请懂得指点一下,谢谢! 环境及依赖 <dependency><groupId>org ...

  9. java操作elasticsearch实现query String

    1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...

最新文章

  1. 1年左右的Java开发经验面试者的心得
  2. 施工企业项目管理的系统修炼_施工企业项目亏损的11个主观因素
  3. 有关 alter tablespace begin backup
  4. python 打包发布网站_Python代码的打包与发布
  5. HYSBZ - 1050(旅行comf 并查集Java实现)
  6. Java图形 图像与多媒体基础,十一. 图形、图像与多媒体1.绘图基础
  7. 作者:宋杰(1980-),男,博士,东北大学软件学院副教授
  8. Android-蓝牙AVRCP 以及 绝对音量(absolute volume)概述-A2dp-hfp
  9. 基于微信小程序的课堂考勤系统设计与实现
  10. 数据可视化大屏案例系列 1
  11. 正则表达式验证ip是否是内网ip
  12. 房聚良源系统功能介绍(SpringBoot)
  13. 使用PDman进行数据库设计
  14. HMTL基础学习之基础篇
  15. Windows——打印机错误(操作无法完成(错误 0x000006ba)。本地打印机后台处理程序服务没有运行。请重新启动打印机后台处理程序或重新启动计算机。)解决方案
  16. java文件服务,苹果相关浏览器文件名乱码而其他例如谷歌浏览器不乱码
  17. 光荣的史诗—PC Game巨头KOEI发展史
  18. Spring Cloud的基本认识和使用Spring Cloud的基本教程(山东数漫江湖)
  19. 计算星期几--C语言
  20. 六大基酒——朗姆酒的喝法

热门文章

  1. (转)被讨厌的勇气--目录
  2. 在html页面填入字符串,\n换行不起作用,怎么办?
  3. DeskMini310 黑苹果(hackintosh)
  4. Formal Verification (一) 形式验证的分类、发展、适用场景
  5. BOOT客户管理系统(详解)
  6. xtrabackup全量+增量备份
  7. 教师计算机招聘笔试考什么内容是什么意思,大学计算机教师招聘面试问题和笔试题16套...
  8. httpd的MPM工作模式
  9. 红米4a android 9 速度,雷军感叹科技进步速度太快!Redmi 9入门机性能已经相当于骁龙835...
  10. 关于在多重积分以及曲线曲面积分中对称性的应用