exchange

SpringBoot高级——消息中间件

半城伤御伤魂 提交于 2019-11-30 21:53:43
一、概述  1、大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力  2、消息服务中的两个重要概念:消息代理(message broker,即消息中间件服务器)和目的地(destination)   当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。  3、消息队列主要有两种形式的目的地   队列(queue):点对点消息通信(point-to-point)    消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获取消息内容,消息读取后被移出队列    消息只有唯一的发送者和接受者,但并不是说只能有一个接收者,这是因为消息一旦被消费就会从队列中移除   主题(topic):发布(publish)/订阅(subscribe)消息通信    发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么就会在消息到达时同时收到消息,不同于点对点的方式,在点对点的方式中一旦一个接收者处理了消息,消息就会被移除,那么其他的接收者就不会再去处理,而订阅的方式则是所有的接收者都会对该消息做出相应处理 二、使用场景  1、异步处理   在用户注册时给用户发送短信和邮件,但是短信和邮件并不需要在注册成功已完成就发送,因此可以异步处理  2、应用解耦  3、流量削峰   比如秒杀:在10万个客户秒杀1万个商品的时候

SpringBoot+RabbitMQ

不打扰是莪最后的温柔 提交于 2019-11-30 21:46:11
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apache,当然了今天的主角还是讲RabbitMQ。消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC的调用等等。 以前一直使用的是ActiveMQ,在实际的生产使用中也出现了一些小问题,在网络查阅了很多的资料后,决定尝试使用RabbitMQ来替换ActiveMQ,RabbitMQ的高可用性、高性能、灵活性等一些特点吸引了我们,查阅了一些资料整理出此文。 RabbitMQ介绍 RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议

springboot2.x整合rabbitmq

我们两清 提交于 2019-11-30 21:45:51
首先请确保你的rabbitmq服务已经打开,或者百度搜索安装 Exchange 类型 Exchange分发消息时根据类型的不同分发策略有区别,目前共四种类型:direct、fanout、topic、headers 。只说前三种模式。 1.Direct模式 消息中的路由键(routing key)如果和 Binding 中的 binding key 一致, 交换器就将消息发到对应的队列中。路由键与队列名完全匹配 2.Topic模式 topic 交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。它将路由键和绑定键的字符串切分成单词,这些单词之间用点隔开。它同样也会识别两个通配符:符号“#”和符号“*”。#匹配0个或多个单词,*匹配一个单词。 3.Fanout模式 每个发到 fanout 类型交换器的消息都会分到所有绑定的队列上去。fanout 交换器不处理路由键,只是简单的将队列绑定到交换器上,每个发送到交换器的消息都会被转发到与该交换器绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。fanout 类型转发消息是最快的。 项目结构 pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

SpringBoot-RabbitMQ03-交换器【direct】介绍

☆樱花仙子☆ 提交于 2019-11-30 21:43:44
交换器介绍   RabbitMQ中有三种主要的交互器分别如下 交换器 说明 direct 发布与订阅 完全匹配 fanout 广播 topic 主体,规则匹配 direct案例   DirectExchange 路由策略是将消息队列绑定到 DirectExchange 上,当 一条消息到达DirectExchange 时会被转发到与该条消息 routing key 相同的 Queue 上,例如消息队列名为“hello-queue ”,则 routingkey 为“hello-queue ”的消息会被该消息队列接收。 1.创建消费者   创建一个SpringBoot项目作为消费者项目具体如下 1.1创建项目并添加依赖 < dependencies > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > </ dependency > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-test </ artifactId > < scope > test

SpringBoot-RabbitMQ04-交换器【topic】介绍

陌路散爱 提交于 2019-11-30 21:43:24
交换器介绍   RabbitMQ中有三种主要的交互器分别如下 交换器 说明 direct 发布与订阅 完全匹配 topic 主体,规则匹配 fanout 广播 topic介绍   TopicExchange 是比较复杂也比较灵活的 种路由策略,在TopicExchange 中,Queue 通过routingkey 绑定到 TopicExchange 上,当消息到达 TopicExchange 后,TopicExchange 根据消息的routingkey 消息路由到一个或者多 Queue上,相比direct模式topic会更加的灵活些。   本案例通过两个项目来实现,一个consumer项目和一个provider项目。 1.创建消费者 项目结构 配置文件 spring.application.name=springcloud-mq spring.rabbitmq.host=192.168.88.150 spring.rabbitmq.port=5672 spring.rabbitmq.username=dpb spring.rabbitmq.password=123 #设置交换器的名称 mq.config.exchange=log.topic #info 队列名称 mq.config.queue.info=log.info #error 队列名称 mq.config.queue

SpringCloud----RabbitMQ 实战(二)--Rabbit 交换器讲解

≡放荡痞女 提交于 2019-11-30 21:41:41
七、 Rabbit 交换器讲解 1 Direct 交换器(发布与订阅 完全匹配) 1.1需求 1.2搭建环境 1.2.1创建项目 1.2.2修改全局配置文件 修改 Consumer 的配置文件 spring.application.name=springcloud-mq spring.rabbitmq.host=192.168.70.131 spring.rabbitmq.port=5672 spring.rabbitmq.username=oldlu spring.rabbitmq.password=123456 #设置交换器的名称 mq.config.exchange=log.direct #info 队列名称 mq.config.queue.info=log.info #info 路由键 mq.config.queue.info.routing.key=log.info.routing.key #error 队列名称 mq.config.queue.error=log.error #error 路由键 mq.config.queue.error.routing.key=log.error.routing.key 修改 Provider 的配置文件 spring.application.name=springcloud-mq spring.rabbitmq.host=192

消息队列-Rabbitmq处理消息及在Spring中的应用

血红的双手。 提交于 2019-11-30 21:39:46
消息队列-Rabbitmq 1. 什么是消息队列 2. AMQP和JMS 3. 常见MQ产品 4. RabbitMQ 4.1 五种消息模型 4.1.1 基本消息模型 4.1.2 work消息模型 4.1.3 订阅模型分类 4.1.3.1 订阅模型-Fanout 4.1.3.2 订阅模型-Direct 4.1.3.3 订阅模型-Topic 5. 处理消息丢失的几种方法 5.1 消费者的ACK机制 5.2 持久化 5.3 生产者确认机制 6. Spring AMQP 6.1 简介 6.2 依赖和配置 6.3 监听者 6.4 AmqpTemplate 6.5 测试代码 1. 什么是消息队列 消息队列,即MQ,Message Queue。 消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。 消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。 2. AMQP和JMS MQ是消息通信的模型,并发具体实现。现在实现MQ的有两种主流方式:AMQP、JMS。 两者间的区别和联系: JMS是定义了统一的接口,来对消息操作进行统一;AMQP是通过 规定协议 来统一数据交互的格式 JMS限定了必须使用Java语言;AMQP只是协议

Spring Boot -- RabbitMQ

烈酒焚心 提交于 2019-11-30 21:38:56
Spring Boot -- RabbitMQ 1. pom.xml 2. application.properties 3. config 4. 生产者 5. 消费者 6. 测试 发现对象消息 一个生产者多个消费者 多个生产者多个消费者 一个交换机绑定多个路由键 QueueConfig Producer Consumer 扇形交换机,广播模式,发布订阅模式 FanoutRabbitConfig Producer 1. pom.xml <!-- RabbitMQ --> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-amqp </ artifactId > </ dependency > 2. application.properties #RabbitMQ spring.rabbitmq.host=192.168.1.199 spring.rabbitmq.port=5672 spring.rabbitmq.virtual-host=localhost spring.rabbitmq.username=root spring.rabbitmq.password=root 3. config @Configuration

RabbitMQ从入门到精通

左心房为你撑大大i 提交于 2019-11-30 21:27:57
文章目录 Linux 部署运维 1.安装erlang 2.安装socat 3.安装rabbit MQ 4.查看rabbitmq状态 5.rabbitmq启动 6.rabbitmq的管理界面 7.rabbitmq停止 8.rabbitmq关闭 9.rabbitmq重启 10.配置文件位于/etc/rabbitmq 11.用户管理 12.集群 Client Demo-HelloWorld (JAVA) 1.Create Maven Project And Import Rabbit MQ amqp-client 2.Create Send Class 3.Create Receive Class Client Demo-HelloWorld(SpringBoot) 1.Use Spring Initializr And Add RabbitMQ Dependency 2.配置 application.yml 3.编写启动类 4.编写Sender 5.编写Receiver 6.编写Amqp配置类 Exchanges 交换机类型 direct topic headers fanout 匿名队列 绑定 Code Notice 报错 connection Refuse 报错reply-code=406, reply-text=PRECONDITION_FAILED 安利 HTML网页版观看 ,

RabbitMQ 从入门到精通 (一)

ぃ、小莉子 提交于 2019-11-30 21:27:45
目录 初识RabbitMQ AMQP 3.RabbitMQ的极速入门 Exchange(交换机)详解 4.1 Direct Exchange 4.2 Topic Exchange 4.3 Fanout Exchange Message 消息 初识RabbitMQ RabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用 Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的 RabbitMQ的优点: 开源、性能优秀、稳定性保障 提供可靠性消息投递模式(confirm)、返回模式(return) 与SpringAMQP完美的整合、API丰富 集群模式丰富,表达式配置,HA模式,镜像队列模型 保证数据不丢失的前提下做到高可靠性、可用性 RabbitMQ官网 RabbitMQ的整体架构: RabbitMQ的消息流转: AMQP AMQP全称: Advanced Message Queuing Protocol AMQP翻译: 高级消息队列协议 AMQP定义: 是具有现代特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 AMQP核心概念: Server:又称Broker,接受客户端的连接,实现AMQP实体服务 Connection:连接