目录

基本概念

代码及演示


基本概念

RabbitMQ
消息中间件是在消息的传输过程中保存消息的容器。消息中间件充当中间人的作用将源消息发送到目标消息。
队列的主要目的是提供路由并保证消息的传递;如果发送消息时接受者不可用,消息队列会保留消息,直到可以成功地传递它为止,当然,消息队列保存消息有期限。

应用程序和应用程序调用关系为松耦合关系
发送者和接受者不必了解对方、只需要确认消息,发送者和接受者不必同时在线;

点对点模型:
          1. 每个消息只能用一个消费者;
          2. 发送者和接受者没有时间依赖;
          3. 接受者确认消息接收和处理成功;

发布者/订阅者模型:
发布者需要建立一个订阅(subscription)以便订阅者订阅。订阅者必须保存持续的活动状态以接收消息,除非订阅者建立了持久的订阅。在这种情况下,在订阅者未连接时发布的消息在订阅者重新连接时发布

1. 每个消息可以有多个订阅者;
          2. 客户端只有订阅后才能接收到消息;
          3. 持久订阅和非持久订阅;

代码及演示

RabbitMQ设置如下:

交换机通过绑定队列,并且设置Routing key把获取的消息放到指定的队列中,

order.* 可以匹配order.xxxx的信息,不能匹配order.xxx.xxx

而order.#可以匹配order.xxx.xxx等数据

目前的队列如下:

使用Spring Boot发送数据后:

Spring Boot结构如下:

Order.java

package productor.demo.entity;import java.io.Serializable;public class Order implements Serializable {private static final long serialVersionUID = -1234567891234332445L;private String id;private String name;private String messageId;   //存储消息发送的唯一IDpublic Order(){}public Order(String id, String name, String messageId) {this.id = id;this.name = name;this.messageId = messageId;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMessageId() {return messageId;}public void setMessageId(String messageId) {this.messageId = messageId;}
}

OderSender.java

package productor.demo.produce;import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.support.CorrelationData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import productor.demo.entity.Order;@Component
public class OderSender {@Autowiredprivate RabbitTemplate rabbitTemplate;public void send(Order order) throws Exception{CorrelationData correlationData = new CorrelationData();correlationData.setId(order.getMessageId());rabbitTemplate.convertAndSend("order-exchange",     //exchange"order.abcd",       //routingKeyorder,                          //消息体correlationData);               //correlationData消息唯一ID}
}

application.properties

server.port=8001spring.rabbitmq.addresses=192.168.164.141:5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
spring.rabbitmq.connection-timeout=15000

DemoApplicationTests.java

package productor.demo;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import productor.demo.entity.Order;
import productor.demo.produce.OderSender;import java.util.UUID;@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {@Autowiredprivate OderSender oderSender;@Testpublic void contextLoads() {}@Testpublic void testSend1()throws Exception{Order order = new Order();order.setId("20180618000000000002");order.setName("测试订单2");order.setMessageId(System.currentTimeMillis() + "$" + UUID.randomUUID().toString());oderSender.send(order);}}

porn.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.sxw</groupId><artifactId>springboot-rabbitmq</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.29</version></dependency><dependency><groupId>com.github.miemiedev</groupId><artifactId>mybatis-paginator</artifactId><version>1.2.17</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions></dependency><!--工具类依赖包--><dependency><groupId>org.apache-commons</groupId><artifactId>commons-lang3</artifactId></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.49</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><scope>provided</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

Spring Boot笔记-发送消息给RabbitMQ相关推荐

  1. Spring Boot笔记-发送纯字符串邮件及带附件邮件

    首先引入Maven包: <dependency><groupId>org.springframework.boot</groupId><artifactId& ...

  2. spring boot 事务_一个基于 RabbitMQ 的可复用的分布式事务消息架构方案!

    作者:Throwable | https://www.cnblogs.com/throwable/p/12266806.html 前提 分布式事务是微服务实践中一个比较棘手的问题,在笔者所实施的微服务 ...

  3. Spring Boot定时发送短信

    Spring Boot定时发送短信的两种方式 不少项目中估计都有遇到定时发送这个梗,我也遇到了,页面中下拉框选项有立即发送以及定时发送,立即发送就不用说了,定时发送可以讲一下,定时的方式有很多种,Ja ...

  4. Spring Boot笔记-接收RabbitMQ队列中的消息

    目录 基本概念 代码与实例 基本概念 首先有个关键:此处实验接收的数据类型为Order,这里要求发送和接收要一模一样. 包括包名和类名都要一模一样: 如下,consumerDemo 下面是produc ...

  5. RabbitMQ(六)——Spring boot中消费消息的两种方式

    前言 上一篇博客中,我们只是简单总结了Spring boot中整合RabbitMQ的操作,针对消息消费的两种方式只是简单给了一个实例,这篇博客,我们进一步总结关于Spring boot消息消费的相关功 ...

  6. Spring Boot系列——7步集成RabbitMQ

    RabbitMQ是一种我们经常使用的消息中间件,通过RabbitMQ可以帮助我们实现异步.削峰的目的. 今天这篇,我们来看看Spring Boot是如何集成RabbitMQ,发送消息和消费消息的.同时 ...

  7. Spring boot(八):RabbitMQ详解

    RabbitMQ介绍 RabbitMQ既一个消息队列,主要用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多.消息中间件最主要的作用是解耦,中 ...

  8. spring boot rabbitmq_Spring Boot2(十):RabbitMQ 详解

    关于SpringBoot整合RabbitMQ,我看了微笑哥的博文,实在不知道还有比这更加全面的了.于是我转载过来了.. RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起 ...

  9. Spring Boot(十四)RabbitMQ延迟队列

    一.前言 延迟队列的使用场景:1.未按时支付的订单,30分钟过期之后取消订单:2.给活跃度比较低的用户间隔N天之后推送消息,提高活跃度:3.过1分钟给新注册会员的用户,发送注册邮件等. 实现延迟队列的 ...

最新文章

  1. mysql or 创建索引_Mysql索引优化
  2. Unity3D 物体移动方法总结
  3. 状态栏背景颜色(转载)
  4. php的注入点,Php注入点构造代码
  5. LeetCode刷题(42)--Subsets
  6. SAP ABAP内表OCCURS,WORK AREA等 语法对比!
  7. ML1.1 机器学习误差分析
  8. 电热毯UL964标准上架亚马逊所需资料流程
  9. Excel如何在姓名与字母之间加空格
  10. mysql查询的金额保留两位小数_mysql查询结果单位换算后保留两位小数
  11. C语言 打开文件时改变文件大小
  12. 使用高德SDK开发安卓地图应用软件
  13. Linux驱动:网卡驱动分析之三--MAC驱动及PHY驱动框架了解
  14. SpringBoot(学习笔记)
  15. SECS/GEM使用
  16. css:两栏三栏布局
  17. 帆软报表自定义提交以及单行提交
  18. [附源码]Nodejs计算机毕业设计基于图书管理系统Express(程序+LW)
  19. 百度云 x 秒懂百科 | 做高质量的知识短视频
  20. 智能化防杀未知电脑病毒探讨

热门文章

  1. IIS7 设置 UrlRewrite
  2. 将整张网页存成png图片
  3. 优化了破网站的搜索功能
  4. 作为一名程序员,我一直为中国的软件产业感到苦恼。
  5. Visual C++中的ODBC编程实例
  6. 自从用python写了个自动弹幕脚本后,各大主播来找我,净赚十万!赶紧收藏!!
  7. 安装chrome_Chrome 离线安装包下载
  8. python的基础命令_深度学习中python常用命令
  9. 机器学习 | 回归评估指标
  10. 新的吉尼斯世界纪录 – 最快人类基因组测序,用时5 小时 2 分钟!