基于第一篇文章搭建好环境以后,我们这篇文章继续介绍如何在springboot中使用RabbitMQ。

  1)、单播:添加好pom文件和自定义配置后,来看:

    @Autowired
RabbitTemplate rabbitTemplate; @Test
public void contextLoads() { // 对象被默认JAVA序列化发送,参数:Exchange,routingKey,消息
rabbitTemplate.convertAndSend("exchange.direct", "iceoooodin.news", "瓦尔克莉");
}

  来看看我们发送的消息是否成功了:

  如图,成功获取了~。

  同样,使用代码来直接获取:

    @Test
public void receive() {
// 接受数据
Object o = rabbitTemplate.receiveAndConvert("iceoooodin.news");
System.out.println(o.getClass());
System.out.println(o);
}

  另外,我们除了str类型,还是发送map、对象等等,比如:

    @Test
public void contextLoads() { Map<String, Object> map = new HashMap<>();
map.put("msg", "第一个数据");
map.put("data", Arrays.asList("helloworld", 123, true));
// 对象被默认JAVA序列化发送
rabbitTemplate.convertAndSend("exchange.direct", "iceoooodin.news", map);
}
@Test
public void contextLoads() { // 对象被默认JAVA序列化发送
rabbitTemplate.convertAndSend("exchange.direct", "iceoooodin.news", new Book("金瓶M", "em.."));
}
public class Book {
private String bookName;
private String author; @Override
public String toString() {
return "Book{" +
"bookName='" + bookName + '\'' +
", author='" + author + '\'' +
'}';
} public Book(String bookName, String author) {
this.bookName = bookName;
this.author = author;
} public Book() {
} public String getBookName() {
return bookName;
} public void setBookName(String bookName) {
this.bookName = bookName;
} public String getAuthor() {
return author;
} public void setAuthor(String author) {
this.author = author;
}
}

Book.java

   2)、然后我们来看广播,也就是发送一堆消息是如何处理的:

@Test
public void sendMst() {
rabbitTemplate.convertAndSend("exchange.fanout", "", new Book("红楼", "草 "));
}

  如果发送的是广播,可以发现,消息会被分别发送到匹配的全部消息队列中:

  3)、我们学会发送和接收了,再看看如何创建Exchange或者Queue吧,我们创建和绑定写在了一起,根据需要自己拆:

    @Autowired
AmqpAdmin amqpAdmin;  //这个amqpadmin是用来管理QP的,可以创建、删除等操作; @Test
public void creatExchange() {
// 创建Exchange
amqpAdmin.declareExchange(new DirectExchange("amqpadmin.exchange"));
System.out.println("创建exchange完成");
// 创建Queue
amqpAdmin.declareQueue(new Queue("amqpadmin.queue", true));
     System.out.println("创建Queue完成");
// 绑定
amqpAdmin.declareBinding(new Binding("amqpadmin.queue", Binding.DestinationType.QUEUE, "amqpadmin.exchange", "amqp.haha", null));
}

  结果就懒得写了,大家自己试验看一下就知道了,到web管理界面看看是否有正确添加和绑定~

SpringBoot日记——MQ消息队列整合(二)的更多相关文章

  1. SpringBoot日记——MQ消息队列整合(一)

    除了之前讲到的缓存,我们还会用到消息队列来存储一些消息,为了提升系统的异步性能等等: 消息服务有两个概念需要知道:消息代理-message broker,目的地-destination.消息发送由代理 ...

  2. 使用Rabbit MQ消息队列

    使用Rabbit MQ消息队列 综合概述 消息队列 消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息 ...

  3. 阿里云ACE共创空间——MQ消息队列产品测试

    一.产品背景消息队列是阿里巴巴集团自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息订阅和发布.消息轨迹查询.定时(延时)消息.资源统计.监控报警等一系列消息云服务,是企业级互联网架构 ...

  4. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  5. 多维度对比5款主流分布式MQ消息队列,妈妈再也不担心我的技术选型了

    1.引言 对于即时通讯网来说,所有的技术文章和资料都在围绕即时通讯这个技术方向进行整理和分享,这一次也不例外.对于即时通讯系统(包括IM.消息推送系统等)来说,MQ消息中件间是非常常见的基础软件,但市 ...

  6. 手把手教你用redis实现一个简单的mq消息队列(java)

    众所周知,消息队列是应用系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有 ActiveMQ,RabbitMQ,Zero ...

  7. Java语言快速实现简单MQ消息队列服务

    目录 MQ基础回顾 主要角色 自定义协议 流程顺序 项目构建流程 具体使用流程 代码演示 消息处理中心 Broker 消息处理中心服务 BrokerServer 客户端 MqClient 测试MQ 小 ...

  8. 初试kafka消息队列中间件二(采用java代码收发消息)

    初试kafka消息队列中间件二(采用java代码收发消息) 上一篇 初试kafka消息队列中间件一 今天的案例主要是将采用命令行收发信息改成使用java代码实现,根据上一篇的接着写: 先启动Zooke ...

  9. 初识MQ消息队列

    MQ 消息队列 消息队列(Message Queue)简称MQ,是阿里巴巴集团中间件技术部自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息发布订阅.消息轨迹查询.定时(延时)消息.资 ...

随机推荐

  1. sqlserver sql优化案例及思路

    始sql: SELECT TOP 100 PERCENT ZZ.CREW_NAME AS 机组, ZZ.CREW_ID, AA.年度时间, CC.当月时间, DD.连续七天时间 AS 最近七天 FRO ...

  2. 自动代码质量分析(GitLab+JenKins+SonarQube)

    自动代码质量分析(GitLab+JenKins+SonarQube) 1.需求场景 开发提交代码自动执行代码质量分析. 2.所需应用 GitLab,JenKins,SonarQube 3.架构图 4. ...

  3. 调用webservice 的时候没法输入参数

    在web.config的<system.web></system.web>中间加入如下配置节内容<webServices> <protocols> &l ...

  4. nginx 服务器在上传文件出现413代码的解决方法

    打开nginx主配置文件nginx.conf 找到http{}段,添加client_max_body_size 20m;

  5. 2018-2019-2 20165302 Exp5 MSF基础应用

    1.实验目的 掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路 2.实验内容 一个主动攻击实践; (1分) MS17-010 一个针对浏览器的攻击:(1分) ms14_064 一个 ...

  6. Kubernetes1.91(K8s)安装部署过程(七)--coredns安装

    为了是集群内的服务能使用dns进行服务解析,集群内需要使用dns服务器,可以按照kube官方dns,即kubedns或者其他的dns,比如coredns, 本例中按照的为coredns,按照简单,编辑 ...

  7. python 连接操作mysql数据库

    开发数据库程序流程: 1.创建connection对象,获取cursor 2.使用cursor执行SQL 3.使用cursor获取数据.判断执行状态 4.提交事务 或者 回滚事务 import: 数据 ...

  8. MVC 在action方法中获取当前action的控制器名和action名

    如何在某个action方法中获取它所在的控制器和action名称呢. string controllerName = Request.RequestContext.RouteData.Values[& ...

  9. php操作url 函数等

    pathinfo() - Returns information about a file path parse_str() - Parses the string into variables pa ...

  10. 删除方法odoo

          ##判断删除情况,不允许删除def unlink(self,cr,uid,ids,context=None): raise osv.except_osv(u'警告!',u'单据不允许删除' ...