exchange

消息队列--RabbitMQ

老子叫甜甜 提交于 2019-11-30 22:14:56
目录 一、概念 1.RabbitMQ 2.AMQP 3.RabbitMQ与AMQP 二、RabbitMQ结构 1. vhost(虚拟主机) : 2.ConnectionFactory(连接工厂) : 3.Connection(连接) : 4.Channel(信道) : 5.Producet(生产者) : 6.Exchange(交换机): 7.RoutingKey(路由键) : 8.Queue(队列) : 9.Binding(绑定) : 10.Consumer(消费者) : 三、交换机类型 1. Direct Exchange 2. Topic Exchange 3.Fanout Exchange 4. Headers Exchange 四、五种队列 1.简单队列 2.work模式 3.发布/订阅模式   4.路由模式 5.主题模式 6.注意 五、生产者与消费者的生命周期 六、代码示例 1.pom文件 2.连接工具类 3. 生产者 4.消费者 六、API介绍 1.声明交换机 2.声明队列 3.绑定队列 4.推送消息 5.消费 6.指定消费队列 七、消息持久化 1.队列与消息的持久化 2.交换机的持久化 一、概念 1.RabbitMQ RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 2.AMQP AMQP,即

系统拆分解耦利器之消息队列---RabbitMQ-发布/订阅

落花浮王杯 提交于 2019-11-30 22:14:40
[一曲广陵不如晨钟暮鼓] 本文,我们来介绍RabbitMQ中的发布与订阅。在正式开始之前,我们假设RabbitMQ服务已经启动,运行端口为5672,如果各位看官有更改过默认配置,那么就需要修改为对应端口,保持一致即可。 准备工作: 操作系统:window 7 x64 其他软件:eclipse mars,jdk7,maven 3 -------------------------------------------------------------------------------------------------------------------------------------------------------- 发布/订阅 在前文中,我们创建了一个工作队列。在工作队列上,我们假设每一个任务都投递给一个指定的worker(消费者)来处理。在本文中,我们将会改变上面的这种设置:任务将会被投递给多个worker(消费者)。这种模式称之为“发布/订阅”。 为了说明这种模式,我们将会构建一个简单的日志系统: 生产者负责产生与发送消息。 接收者其由两个程序组成,第一个:输出日志消息到控制台,第二个:输出消息到文件。 在我们构建的日志系统中,每一个复制出来的运行态的接收者都会收到相同的消息。 本质上讲:发布的日志消息最终会转发给所有的接收者。 Exchanges(交换器)

Python操作RabbitMQ

核能气质少年 提交于 2019-11-30 22:12:37
RabbitMQ 1概念 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。 MQ全称为Message Queue, 消息队列 (MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如 远程过程调用 的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。 2.RabbitMQ安装 安装配置epel源 $ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8 .noarch.rpm 安装erlang $ yum - y install erlang 安装RabbitMQ $ yum -y install rabbitmq-server 注意:service rabbitmq-server start/stop 安装API pip install pika or easy_install pika or 源码 https: //pypi.python.org/pypi/pika 使用API操作RabbitMQ

消息队列--RabbitMQ基础

两盒软妹~` 提交于 2019-11-30 22:12:27
文章目录 一、什么是消息队列? 二、什么是AMQP? 三、交换器类型 3.1-Direct 3.2-Fanout 3.3-Topic 3.4-默认交换机 四、RabbitMQ安装(linux) 五、FAQ 一、什么是消息队列? 消息队列(MessageQueue),简称MQ,FIFO,即先进先出,是一种为了解决“逻辑解耦+物理解耦”的消息通信服务。 MQ是一种系统间相互协作的通信机制, 在系统解耦、流量削峰、日志收集、保持事务一致性等方便都会有很大帮助,一个典型的消息队列,如下图所示: Broker:消息处理中心,负责消息的接受、存储、转发; Producer:消息生产者,负责产生和发送消息到消息处理中心; Consumer:消息消费者,负责从消息处理中心获取消息,并进行相应的处理; 二、什么是AMQP? AMQP(Advanced Message Queue Protocol)是一种用于实现消息队列所涉及的协议,常见的协议有AMQP、MQTT、STOMP、XMPP等。RabbitMQ是一个由erlang开发的AMQP的开源实现。官网地址: RabbitMQ官网地址 先了解一下AMQP协议的基本概念: Message(消息):消息服务器处理数据的原子单元。消息包括一个内容头、一组属性和一个内容体。消息可以被存储到硬盘中,本身有优先级; Publisher(消息生产者)

springboot-rabbitmq-死信队列

萝らか妹 提交于 2019-11-30 22:06:27
1、配置configuration @Configuration public class DirectRabbitConfig { /** * 死信队列 交换机标识符 */ private static final String DEAD_LETTER_QUEUE_KEY = "x-dead-letter-exchange"; /** * 死信队列交换机绑定键标识符 */ private static final String DEAD_LETTER_ROUTING_KEY = "x-dead-letter-routing-key"; /** * 死信队列跟交换机类型没有关系 不一定为directExchange 不影响该类型交换机的特性. * * @return the exchange */ @Bean("deadLetterExchange") public Exchange deadLetterExchange() { return ExchangeBuilder.directExchange("DL_EXCHANGE").durable(true).build(); } /** * 声明一个死信队列. * x-dead-letter-exchange 对应 死信交换机 * x-dead-letter-routing-key 对应 死信队列 * * @return the

RabbitMq学习笔记002---RabbitMq在SpringBoot中的应用_配置_使用_并且设置优先级

醉酒当歌 提交于 2019-11-30 22:05:06
JAVA技术交流QQ群:170933152 首先新建一个SpringBoot的工程,空的就可以: 可以用idea 也可以用eclipse,也可以用sts,这类工具都可以 E:\StsWorkSpace\spring-boot-rabbitmq-test 然后看配置: 首先在application.properties中写入rabbitmq的配置 E:\StsWorkSpace\spring-boot-rabbitmq-test \src\main\resources\application.properties #spring.application.name=spring-boot-rabbitmq spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest 这里注意:端口号是5672,本地在浏览器访问rabbitmq服务器的时候是: http://localhost:15672/#/queues/%2F/direct 这个地址,但是配置的时候,用5672,用15672是会连接不上的 然后再写个配置类: E:\StsWorkSpace\spring-boot-rabbitmq-test\src\main

java实现rabbitMQ延时队列详解以及spring-rabbit整合教程

流过昼夜 提交于 2019-11-30 22:02:00
java实现rabbitMQ延时队列详解 这是我在公司开发中使用的俩套方案,感兴趣的话可以看一下: 点击下载 在实际的业务中我们会遇见生产者产生的消息,不立即消费,而是延时一段时间在消费。RabbitMQ本身没有直接支持延迟队列功能,但是我们可以根据其特性Per-Queue Message TTL和 Dead Letter Exchanges实现延时队列。也可以通过改特性设置消息的优先级。 1.Per-Queue Message TTL RabbitMQ可以针对消息和队列设置TTL(过期时间)。队列中的消息过期时间(Time To Live, TTL)有两种方法可以设置。第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。第二种方法是对消息进行单独设置,每条消息TTL可以不同。如果上述两种方法同时使用,则消息的过期时间以两者之间TTL较小的那个数值为准。消息在队列的生存时间一旦超过设置的TTL值,就成为dead message,消费者将无法再收到该消息。 2.Dead Letter Exchanges 当消息在一个队列中变成死信后,它能被重新publish到另一个Exchange。消息变成Dead Letter一向有以下几种情况: 消息被拒绝(basic.reject or basic.nack)并且requeue=false 消息TTL过期 队列达到最大长度

RabbitMQ 与SpringMvc的配置使用

≯℡__Kan透↙ 提交于 2019-11-30 22:01:42
在MQ消息服务框架方面, Spring官方提供了RabbitMQ的使用案例, 采用的是SpringBoot的方式( messaging-rabbitmq ); 接下来, 我们采用Xml配置的方式结合RabbitMQ到SpringMvc里面玩玩! 环境: Win10+Jdk1.8+Spring4.3+RabbitMQ3.6.5 1 . 本地先安装RabbitMQ服务 请参考这里 URL ,下载合适自己的安装包并进行安装!因为Rabbit是基于Erlang平台运行的, 借用了它的并发性, 分布式等特性, 所以安装Erlang环境可以看 URL ! 为了后续方便, 可以在安装完RabbitMQ后配置下它的环境变量! 2 . 看下RabbitMQ的运行状态, 有需要的话可以再添加一下自己服务的配置, 在命令行执行以下命令 1> 查询RabbitMQ的状态 rabbitmqctl status 2> 查询系统用户列表, “guest” 默认密码也是”guest”, 它的角色是”administrator”, 系统最高权限者, 可以登陆后台管理系统, 查看系统的所有状态信息及相关增删操作! rabbitmqctl list_users 3> 先执行下面的命令启用后台管理功能, 然后访问 “ http://127.0.0.1:15672/ “, 再使用超级管理员guest进行登陆查看并操作!

spring boot 整合RabbitMq

此生再无相见时 提交于 2019-11-30 21:56:15
RabbitMq的介绍和基本的认识在上一篇中讲过,不再赘述。直接上代码,整合springboot RabbitMq Maven中引入RabbitMq依赖 <dependency> <groupId>repository.org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.0.3.RELEASE</version> </dependency> 第一种: 首先先定义一个队列 package com.example.rabbit.demo.conf; import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * <p>Title: RabbitMqConfig</p> * <p>Description: </p> * <p>Company: pengcheng.du@ambow.com</p> * @author pengchengDu * @date 2018年8月22日 */ @Configuration

springboot集成rabbitmq实战

拈花ヽ惹草 提交于 2019-11-30 21:54:28
RabbitMQ介绍 RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全 通常我们谈到队列服务, 会有三个概念: 发消息者、队列、收消息者,RabbitMQ 在这个基本概念之上, 多做了一层抽象, 在发消息者和 队列之间, 加入了交换器 (Exchange). 这样发消息者和队列就没有直接联系, 转而变成发消息者把消息给交换器, 交换器根据调度策略再把消息再给队列 虚拟主机:一个虚拟主机持有一组交换机、队列和绑定。为什么需要多个虚拟主机呢?很简单,RabbitMQ当中,用户只能在虚拟主机的粒度进行权限控制。 因此,如果需要禁止A组访问B组的交换机/队列/绑定,必须为A和B分别创建一个虚拟主机