本文适用于对 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());
}
}

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

源码下载地址

  

最新文章

  1. Chrome Crx 插件下载
  2. MySQL Spatial Extensions 地理信息
  3. 使用awstats分析iis站点的日志
  4. Ubuntu1404+Django1.9+Apache2.4部署配置2配置文件设置
  5. TCP/IP 邮件的原理
  6. Hibernate分页
  7. Multi-Channel MAC for Ad Hoc Networks: Handling Multi-Channel Hidden Terminals Using A Single Transceiver
  8. 安装64位Oracle 10g超详细教程
  9. Nagios邮件报警
  10. es6的一些个人总结
  11. Swift类中如何创建一个对外只读对内可读写的属性
  12. 20172328 2018-2019《Java软件结构与数据结构》第八周学习总结
  13. SQL-结构化查询语言(2)
  14. Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
  15. Spark性能优化(1)——序列化、内存、并行度、数据存储格式、Shuffle
  16. wp中的双向绑定
  17. python: 随机选择
  18. 【BZOJ4551】[Tjoi2016&amp;Heoi2016]树 并查集
  19. Java开发过程中乱码问题理解
  20. Android ToggleButton(开关函数)与switch (开关按钮)

热门文章

  1. MathType如何打出带圆圈的点
  2. Postman实用小技巧
  3. 【mq学习笔记】mq查找路由信息与故障延迟
  4. mfc c++优化
  5. Codeforces Educational Round 94 (Rated for Div. 2)
  6. PyQt(Python+Qt)学习随笔:自定义信号在emit发射信号时报错:AttributeError: object has no attribute
  7. 安恒2018年三月月赛MISC蜘蛛侠呀
  8. 冲刺Day6
  9. 百度前端技术学院-基础-day17-18
  10. When you received Ubuntu...