spring boot / cloud (九) 使用rabbitmq消息中间件
spring boot / cloud (九) 使用rabbitmq消息中间件
前言
rabbitmq介绍:
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。它可以用于大型软件系统各个模块之间的高效通信,支持高并发,支持可扩展。
amqp介绍:
即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。
思路
基于spring boot的特性连接rabbitmq,并作出如下样例:
配置
发布方样例
消费方样例
实现
1.配置
引入maven依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
编写config配置类(默认情况下是不用做任何配置的,这里有配置是因为,它默认是用的二进制做的消息传输,这里的配置是改为json传输)
@Configuration
public class RabbitMqConfig {@Beanpublic SimpleRabbitListenerContainerFactory rabbitListenerContainerFactoryPlus(SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory,Jackson2JsonMessageConverter jackson2JsonMessageConverter) {rabbitListenerContainerFactory.setMessageConverter(jackson2JsonMessageConverter);return rabbitListenerContainerFactory;}@Beanpublic Jackson2JsonMessageConverter jackson2JsonMessageConverter(ObjectMapper xssObjectMapper) {return new Jackson2JsonMessageConverter(xssObjectMapper);}}
编写配置文件
spring.rabbitmq.host=192.168.134.100
spring.rabbitmq.port=5672
spring.rabbitmq.username=dev_udf-sample
spring.rabbitmq.password=1qazxsw2
spring.rabbitmq.virtual-host=/dev_udf-sample
spring.rabbitmq.template.retry.enabled=true #发送方是否重试
spring.rabbitmq.listener.retry.enabled=true #消费方是否重试
定义公共的消息类
public class RabbitmqMessage<T> implements Serializable {private static final long serialVersionUID = 1L;//消息IDprivate String id;....其他自定义
}
2.发布方样例
创建Exchange,这里使用的是DirectExchange,exchange主要是定义路由规则的,还有其他不同的路由规则实现,如:TopicExchange,他们都继承至AbstractExchange
@Beanpublic DirectExchange testExchange() {return new DirectExchange("test_exchange");}
使用AmqpTemplate发送异步消息(RoutingKey则是指定消息的路由键,不同的路由键可被不同的消费方消费)
@Autowiredprivate AmqpTemplate amqpTemplate;//然后调用发送方法发送消息this.amqpTemplate.convertAndSend("test_exchange", "testRoutingKey", new RabbitmqMessage<String>("test"));
3.消费方样例
创建消费队列,死信队列,以及与exchange的绑定关系
//消费队列@Beanpublic Queue testConsume() {//死信exchange与上面的定义方式一样Map<String, Object> args = new HashMap<>();args.put("x-dead-letter-exchange","test_exchange_dlx");args.put("x-dead-letter-routing-key","testRoutingKey_dlx");return new Queue("test_consume", true, false, false, args);}//死信消费队列@Beanpublic Queue testConsumeDlx() {return new Queue("test_consume_dlx");}//消费队列绑定@Beanpublic Binding testConsumeBinding() {return new Binding("test_consume", DestinationType.QUEUE,"test_exchange","testRoutingKey", null);}//死信消费队列绑定@Beanpublic Binding testConsumeDlxBinding() {return new Binding("test_consume_dlx", DestinationType.QUEUE,"test_exchange_dlx","testRoutingKey_dlx", null);}
消费消息
@RabbitListener(queues = "test_consume")public void process(Message<String> message) {log.info(message);}
代码仓库 (博客配套代码)
udf-starter : 基础项目,脚手架,框架
udf-sample : 集成样例
结束
以上演示了rabbitmq在spring boot中的配置,以及发送方和消费方的样例,在后续的章节中,会找机会介绍rabbitmq的搭建以及配置.
想获得最快更新,请关注公众号
转载于:https://www.cnblogs.com/itkk/p/7477132.html
spring boot / cloud (九) 使用rabbitmq消息中间件相关推荐
- spring boot / cloud (十七) 快速搭建注册中心和配置中心
spring boot / cloud (十七) 快速搭建注册中心和配置中心 本文将使用spring cloud的eureka和config server来搭建. 然后搭建的模式,有很多种,本文主要聊 ...
- Spring Boot/Cloud 界面与安全设计
Spring Boot/Cloud 界面与安全设计 一.后端渲染 Thymeleaf 二.后端渲染 Freemarker 三.后端渲染 jsp 四.前端渲染 vue 五.原生 json 请求(自) 六 ...
- 【转帖】是时候给大家介绍 Spring Boot/Cloud 背后豪华的研发团队了。
是时候给大家介绍 Spring Boot/Cloud 背后豪华的研发团队了. 2019/01/03 http://www.ityouknow.com/springboot/2019/01/03/spr ...
- Spring Boot/Cloud干货汇总(持续更新:20180226版)
抽空对本号推送的Spring相关内容做个汇总整理,包括: - Spring - Spring Boot - Spring cloud - 其他Spring干货内容 Spring Boot专题 基础入门 ...
- 基于spring boot的邮件微服务消息中间件设计与实现 毕业论文+系统功能图v1.0.vsdx+项目源码
下载地址:https://download.csdn.net/download/m0_63680064/36065411 项目介绍: 基于spring boot的邮件微服务消息中间件设计与实现 毕业论 ...
- Spring Initializr 构建Spring Boot/Cloud工程
2019独角兽企业重金招聘Python工程师标准>>> 在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式 ...
- 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程(十五)
在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...
- spring boot / cloud (二) 规范响应格式以及统一异常处理
spring boot / cloud (二) 规范响应格式以及统一异常处理 前言 为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队 ...
- 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程
在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...
- spring boot / cloud (七) 使用@Retryable来进行重处理
spring boot / cloud (七) 使用@Retryable来进行重处理 前言 什么时候需要重处理? 在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败,调用远程服务失败,争抢锁 ...
最新文章
- 怎么重写MDK(KEIL)Flash烧写程序
- DataSet中的relation
- bootstrap导航条文字颜色_XEditor基础组件:导航条
- Samba 服务共享
- 实战中的asp.net core结合Consul集群Docker实现服务治理
- 使用Camel在来自不同来源的Solr中索引数据
- 【LeetCode】剑指 Offer 56. 数组中数字出现的次数
- Github上点赞最多的10个Python项目(2020年3月)
- The proxy server received an invalid response from an upstream server.
- 腾达u2无线网卡驱动Linux,腾达u2网卡驱动下载
- 虚拟机无法服务器系统安装win7系统,如何解决虚拟机安装Win7系统失败的问题
- source insight 4.0 的一些设置
- 一文读懂哈希算法SHA256
- 日期计算器输入天数计算日期_计算日期范围内的活动
- HDU2058 The sum problem(数学问题)
- 欧格教育:差评对店铺有哪些影响
- 读H.265/HEVC编码笔记(一)
- 运算符重载(二):重载赋值
- 反射——反射的优缺点和优化
- 【Comet OJ】 - Contest #9 X Round 3 【XR-3】小道消息
热门文章
- android编写蓝牙工具类,【Android BLE】蓝牙开发「防丢器」的相关知识点(三):手机与设备之间指令传输...
- Docker安装vi命令
- cat依赖的org.unidal.maven.plugins:plexus-maven-plugin:pom:2.1.2
- 使用javaGUI编写检测是否有网
- 【渝粤教育】国家开放大学2018年春季 8665-21T护理伦理学 参考试题
- 腾讯 “绝悟”论文披露技术细节。
- 错误处理与调试[下]
- 算法复习——带修改莫队(bzoj2453)
- C和指针---读书笔记9
- 【转】Prewitt 算子