本文适用于对 RabbitMQ 有所了解的人,在此不讨论MQ的原理,只讨论如何接入。其实Spring Boot 集成 RabbitMQ 非常简单,本文章使用的是Spring Boot 提供了spring-boot-starter-amqp 项目对消息各种支持。

接下来将进入正题,六步轻松教你接入RabbitMQ

1.配置pom文件所依赖的主要jar包

<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>

2.配置文件(application.properties)

## rabbitmq
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=root
spring.rabbitmq.password=root
spring.rabbitmq.virtual-host=/ # rabbitmq消息确认
spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.publisher-returns=true ## rabbitmq-config
rabbitmq.exchange-key = rabbitmq.test.exchange
rabbitmq.routing-key = rabbitmq.test.routing.key
rabbitmq.queue-name=rabbitmq.queue.name.test

3.交换机和队列绑定配置

@Value("${rabbitmq.queue-name}")
String queueName; @Value("${rabbitmq.exchange-key}")
String exchangeKey; @Value("${rabbitmq.routing-key}")
String routingKey; @Bean(value = "${rabbitmq.queue-name}")
public Queue initOrderCancelQueue(){
return new Queue(queueName) ;
} @Bean(value = "${rabbitmq.exchange-key}")
public CustomExchange customExchange(){
Map<String,Object> args=new HashMap<>();
return new CustomExchange(exchangeKey,"topic",true,false,args);
} @Bean
public Binding binding(@Qualifier(value = "${rabbitmq.queue-name}") Queue queue,
@Qualifier(value = "${rabbitmq.exchange-key}") CustomExchange exchange){
return BindingBuilder
.bind(queue)
.to(exchange)
.with(routingKey)
.and(exchange.getArguments());
}

4.生产者

@Value("${rabbitmq.exchange-key}")
String exchangeKey; @Autowired
private AmqpTemplate amqpTemplate;
/**
* 发送MQ
* @param routingKey
* @param obj 参数
*/
public void sendNotification(String routingKey, Object obj){
this.amqpTemplate.convertAndSend(exchangeKey,routingKey,obj);
}

5消费者

@RabbitHandler
@RabbitListener(queues = "${rabbitmq.queue-name}")
public void receiveRabbitmqMsg(Message msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag){
String funcName="接收到RabbitmqMsg";
logger.info("{}:{}",funcName,msg);
try { }catch(Exception e) { }finally { }
}

6.测试

@Autowired
RabbitmqProducer producer; @Value("${rabbitmq.routing-key}")
String routingKey; public void sendMsg(){
TestModel testModel =new TestModel();
testModel.setName("fxx");
testModel.setAge(18);
testModel.setGender("girl");
try {
producer.sendNotification(routingKey,testModel);
}catch (Exception e){
logger.error("系统异常:"+e.toString());
}
}

搞定!就这么简单,赶快自己动手试试吧

源码下载地址

  

Springboot接入RabbitMQ详细教程的更多相关文章

  1. 在linux下安装配置rabbitMQ详细教程

    在linux下安装配置rabbitMQ详细教程 2017年12月20日 17:34:47 阅读数:7539 安装Erlang 由于RabbitMQ依赖Erlang, 所以需要先安装Erlang. Er ...

  2. SpringBoot入门最详细教程

    monkey01 关注 2017.08.08 13:36* 字数 1479 阅读 34248评论 0喜欢 15 网上有很多springboot的入门教程,自己也因为项目要使用springboot,所以 ...

  3. cSpring Boot整合RabbitMQ详细教程

    来自:https://blog.csdn.net/qq_38455201/article/details/80308771 十分详细,几张图片不显示,看这个地址 1.首先我们简单了解一下消息中间件的应 ...

  4. Spring Boot整合RabbitMQ详细教程

    原文:https://blog.csdn.net/qq_38455201/article/details/80308771 1.首先我们简单了解一下消息中间件的应用场景 异步处理 场景说明:用户注册后 ...

  5. Centos7安装RabbitMQ详细教程

    MQ引言 什么是MQ MQ:message Queue翻译为消息队列,通过典型的生产者和消费者模型不断向消息队列中生产消息,消费者不断从队列中获取消息.因为消息的生产和消费都是一部的,而且只关心消息的 ...

  6. SpringBoot整合Swagger2详细教程

    1. 简介   随着前后端分离开发模式越来越流行,编写接口文档变成了开发人员非常头疼的事.而Swagger是一个规范且完整的web框架,用于生成.描述.调用可视化的RESTful风格的在线接口文档,并 ...

  7. SpringBoot整合RabbitMQ实践教程

    1. MQ   MQ(Message Queue),消息队列,是生产者和消费者模型中传递信息的容器,主要用于线程或进程之间通信.   MQ主要的应用场景为:应用解耦.异步处理,流量削锋,日志处理等. ...

  8. linux 安装rabbitMQ详细教程

    经过第一次的安装失败, 第二次总算是成功了, 这里总结一下. 第一步:下载版本对应的rpm安装包 1. 下载Erlang安装包:RabbitMQ是Erlang语言编写,所以Erang环境必须要有,注: ...

  9. Spring-boot之 rabbitmq

    今天学习了下spring-boot接入rabbitmq. windows下的安装:https://www.cnblogs.com/ericli-ericli/p/5902270.html 使用博客:h ...

随机推荐

  1. MYSQL进阶,新手变司机

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( S ...

  2. Gradle version 2.2 is required. Current version is 2.14.1.

    gradle版本错误: 1. 修改gradle\wrapper\gradle-wrapper.properties文件: distributionUrl=https\://services.gradl ...

  3. Android -- 自定义View小Demo,关于Rect绘制Android机器人(一)

    1,关于Rect和RectF类的区别以前一直没有去关注它,刚刚了解了一下才知道都是用来确定矩形的区域,不过Rect是int类型的坐标而RectF是float类型的坐标,所以说RectF要更加精确.现在 ...

  4. Error -26612: HTTP Status-Code=500 (Internal Server Error) ...

    造成HTTP-500错误,有朋友告诉我如下几个可能: 1.运行的用户数过多,对服务器造成的压力过大,服务器无法响应,则报HTTP500错误.减小用户数或者场景持续时间,问题得到解决. 2.该做关联的地 ...

  5. python中将字符串转化为本地变量

    var = 123445s= locals()['var']s2=vars()['var'] print s,s2

  6. (转)fastcgi协议的简单实现

    FastCgi不仅可以用于webserver与PHP的交互,也可用于任何两个应用之间的交互,PHPer用的比较多的应该就是用于两个子系统之间的交互. 比如A系统和B系统分部独立的部署在两台机器上,其之 ...

  7. 简单的Java逻辑小代码(打擂台,冒泡排序,水仙花数,回文数,递归)

    1.打擂台 简单的小代码,打擂台.纪念下过去,祝福下新人. public static void main(String[] args){ int[] ld = {1,4,2,10,8,9,5}; i ...

  8. Spring.NET依赖注入框架学习--简单对象注入

    Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...

  9. 【CF736D】Permutations 线性代数+高斯消元

    [CF736D]Permutations 题意:有一个未知长度为n的排列和m个条件,第i个条件$(a_i,b_i)$表示第$a_i$个位置上的数可以为$b_i$.保证最终合法的排列的个数是奇数.现在有 ...

  10. MySQL中You can&#39;t specify target table for update in FROM clause异常

    mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值 ...