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消息中间件相关推荐

  1. spring boot / cloud (十七) 快速搭建注册中心和配置中心

    spring boot / cloud (十七) 快速搭建注册中心和配置中心 本文将使用spring cloud的eureka和config server来搭建. 然后搭建的模式,有很多种,本文主要聊 ...

  2. Spring Boot/Cloud 界面与安全设计

    Spring Boot/Cloud 界面与安全设计 一.后端渲染 Thymeleaf 二.后端渲染 Freemarker 三.后端渲染 jsp 四.前端渲染 vue 五.原生 json 请求(自) 六 ...

  3. 【转帖】是时候给大家介绍 Spring Boot/Cloud 背后豪华的研发团队了。

    是时候给大家介绍 Spring Boot/Cloud 背后豪华的研发团队了. 2019/01/03 http://www.ityouknow.com/springboot/2019/01/03/spr ...

  4. Spring Boot/Cloud干货汇总(持续更新:20180226版)

    抽空对本号推送的Spring相关内容做个汇总整理,包括: - Spring - Spring Boot - Spring cloud - 其他Spring干货内容 Spring Boot专题 基础入门 ...

  5. 基于spring boot的邮件微服务消息中间件设计与实现 毕业论文+系统功能图v1.0.vsdx+项目源码

    下载地址:https://download.csdn.net/download/m0_63680064/36065411 项目介绍: 基于spring boot的邮件微服务消息中间件设计与实现 毕业论 ...

  6. Spring Initializr 构建Spring Boot/Cloud工程

    2019独角兽企业重金招聘Python工程师标准>>> 在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式 ...

  7. 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程(十五)

    在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...

  8. spring boot / cloud (二) 规范响应格式以及统一异常处理

    spring boot / cloud (二) 规范响应格式以及统一异常处理 前言 为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队 ...

  9. 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

    在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也 ...

  10. spring boot / cloud (七) 使用@Retryable来进行重处理

    spring boot / cloud (七) 使用@Retryable来进行重处理 前言 什么时候需要重处理? 在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败,调用远程服务失败,争抢锁 ...

最新文章

  1. 怎么重写MDK(KEIL)Flash烧写程序
  2. DataSet中的relation
  3. bootstrap导航条文字颜色_XEditor基础组件:导航条
  4. Samba 服务共享
  5. 实战中的asp.net core结合Consul集群Docker实现服务治理
  6. 使用Camel在来自不同来源的Solr中索引数据
  7. 【LeetCode】剑指 Offer 56. 数组中数字出现的次数
  8. Github上点赞最多的10个Python项目(2020年3月)
  9. The proxy server received an invalid response from an upstream server.
  10. 腾达u2无线网卡驱动Linux,腾达u2网卡驱动下载
  11. 虚拟机无法服务器系统安装win7系统,如何解决虚拟机安装Win7系统失败的问题
  12. source insight 4.0 的一些设置
  13. 一文读懂哈希算法SHA256
  14. 日期计算器输入天数计算日期_计算日期范围内的活动
  15. HDU2058 The sum problem(数学问题)
  16. 欧格教育:差评对店铺有哪些影响
  17. 读H.265/HEVC编码笔记(一)
  18. 运算符重载(二):重载赋值
  19. 反射——反射的优缺点和优化
  20. 【Comet OJ】 - Contest #9 X Round 3 【XR-3】小道消息

热门文章

  1. android编写蓝牙工具类,【Android BLE】蓝牙开发「防丢器」的相关知识点(三):手机与设备之间指令传输...
  2. Docker安装vi命令
  3. cat依赖的org.unidal.maven.plugins:plexus-maven-plugin:pom:2.1.2
  4. 使用javaGUI编写检测是否有网
  5. 【渝粤教育】国家开放大学2018年春季 8665-21T护理伦理学 参考试题
  6. 腾讯 “绝悟”论文披露技术细节。
  7. 错误处理与调试[下]
  8. 算法复习——带修改莫队(bzoj2453)
  9. C和指针---读书笔记9
  10. 【转】Prewitt 算子