exchange

RabbitMQ安装与原理详解

人走茶凉 提交于 2020-01-18 02:40:32
文章目录 一、概述 1. 什么是消息队列 2. 为什么要使用消息队列 3. RabbitMQ特点 二、安装 1. 安装Erlang 2. 安装RabbitMQ 三、RabbitMQ 1. 启动和关闭 2. 插件管理 3. 用户管理 4. 权限管理 5. vhost管理 6. 设置管理员权限 四、消息发送和接收 1. RabbitMQ消息发送和接收机制 2. AMQP 中的消息路由 3. Exchange与Queue关联绑定 4. Exchange 类型 (1)direct (2)fanout (3)topic 5. Client与Brocker进行连接 五、RabbitMQ镜像集群 1. 准备 2. 配置Cookie文件 3. 配置hosts文件 4. 组建集群 5. 节点类型 一、概述 1. 什么是消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。 2. 为什么要使用消息队列 从上面的描述中可以看出消息队列是一种应用间的 异步协作机制

SpringBoot整合RabbitMQ及其操作

空扰寡人 提交于 2020-01-18 01:24:39
SpringBoot 整合RabbitMQ https://blog.csdn.net/hellozpc/article/details/81436980 导入依赖 < dependency > < groupId > org . springframework . boot < / groupId > < artifactId > spring - boot - starter - amqp < / artifactId > < / dependency > 1. direct模式 直连模式,这里采用到了默认的Direct类型的Exchange,不用手动创建Exchange. 配置类 package com . hao . springbootrabbitmq . normalDirect . config ; import org . springframework . amqp . core . Queue ; import org . springframework . context . annotation . Bean ; import org . springframework . context . annotation . Configuration ; @Configuration public class NormalDirectConfig { @Bean

SpringBoot连接多RabbitMQ源

為{幸葍}努か 提交于 2020-01-17 06:48:53
在实际开发中,很多场景需要异步处理,这时就需要用到RabbitMQ,而且随着场景的增多程序可能需要连接多个RabbitMQ。SpringBoot本身提供了默认的配置可以快速配置连接RabbitMQ,但是只能连接一个RabbitMQ,当需要连接多个RabbitMQ时,默认的配置就不太适用了,需要单独编写每个连接。 在SpringBoot框架中,我们常用的两个类一般是: RabbitTemplate :作为生产、消费消息使用; RabbitAdmin :作为申明、删除交换机和队列,绑定和解绑队列和交换机的绑定关系使用。 所以我们连接多个RabbitMQ就需要重新建立连接、重新实现这两个类。 代码如下: 配置 application.properties 配置文件需要配置两个连接: server.port=8080 # rabbitmq v2.spring.rabbitmq.host=host v2.spring.rabbitmq.port=5672 v2.spring.rabbitmq.username=username v2.spring.rabbitmq.password=password v2.spring.rabbitmq.virtual-host=virtual-host #consume 手动 ack v2.spring.rabbitmq.listener.simple

RabbitMQ学习系列(四): 几种Exchange 模式

允我心安 提交于 2020-01-16 12:21:31
  上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章: RabbitMQ学习系列(三): C# 如何使用 RabbitMQ 。今天说些理论的东西,Exchange 的几种模式。   AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储。同理,消费者也是如此。Exchange 就类似于一个交换机,转发各个消息分发到相应的队列中。   RabbitMQ提供了四种Exchange模式:fanout,direct,topic,header 。 header模式在实际使用中较少,本文只对前三种模式进行比较。    一. Fanout Exchange       所有发送到Fanout Exchange的消息都会被转发到与该Exchange 绑定(Binding)的所有Queue上。   Fanout Exchange 不需要处理RouteKey 。只需要简单的将队列绑定到exchange 上。这样发送到exchange的消息都会被转发到与该交换机绑定的所有队列上。类似子网广播,每台子网内的主机都获得了一份复制的消息。   所以,Fanout Exchange 转发消息是最快的。      ///

RabbitMQ

最后都变了- 提交于 2020-01-15 05:52:49
1、RabbitMQ 简介   MQ全称为Message Queue, 消息队列 (MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。 MQ是消费-生产者模型的一个典型的代表,一端往 消息队列 中不断写入消息,而另一端则可以读取或者订阅队列中的消息。   RabbitMQ 是一个消息代理。主要的原理就是通过接受和转发消息。RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,消息中间件主要用于组件之间的解耦。   RabbitMQ服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。 2、使用场景 例如:应用程序A向应用程序B发送请求并期望得到响应 。 发送方 (应用程序A)向 消息中间件 (RabbitMQ) 发送请求, 接受方 (应用程序B)订阅请求。发送方将消息发送给消息中间件后,异步执行程序。 发送方 (应用程序B) 向 消息中间件 (RabbitMQ) 发送请求 , 接受方 (应用程序A)订阅请求。发送方将消息发送给消息中间件后,异步执行程序。 在项目中,将一些无需即时返回且耗时的操作提取出来,进行了 异步处理 ,而这种异步处理的方式大大的节省了服务器的

rabbitmq安装 Windows10

放肆的年华 提交于 2020-01-14 17:30:01
到今天我依旧不能忘记那天让rabbitmq支配的我,到头来还是坑了自己 为什么这样说呢?因为通过这次rabbitmq的安装,我充分了解到: 英语好是很重要的一件事情,特别当你神志不清时,着急只会让你更加着急,而不能对你有丝毫的帮助 讲了一堆废话0o 0下面讲一下我悲惨的安装历程,希望能够给大家提供一点帮助 当我了解到我要学习一些不一样的东西时,我是很开心的,只能说人类果然还是对未来看的太美好啊! 假如你不是第一次安装rabbitmq 这不是你的第一次安装,所以在你安装新的rabbitmq请确保erlang文件和rabbitmq文件已经完全删除 删除erl文件时有empd.exe文件运行导致不能不删除,请在任务管理器中找到该进程并停止运行后删除 当然你也可能会找不到这个进程,那么就请重启然后就能删除erlang文件了 通过regedit打开注册表 找到HKEY_LOCAL_MACHINE\SOFTWARE\Ericsson\Erlang\ErlSrv 把其下所有项删除 检查端口是否被占用 netstat -ano 查看所有打开的端口 netstat -aon|findstr "4369" 检查4369端口情况 tasklist|findstr "13876" 返回对应pid进程 环境配置,erlang 本人参照教程http://www.cnblogs.com/ericli

RabbitMQ(二)

此生再无相见时 提交于 2020-01-14 02:42:24
(1) MQ的概念 Message Queue :消息队列,存放消息的一个容器(先进先出) (2)MQ的优点 解耦 、 异步提速 、 削峰填谷 (3)MQ的缺点 可用性减弱 、复杂性提供、处理一致性 MQ是需要成本的,适合的地方使用。 (4)MQ的实现 RabbitMQ(erlang AMQP协议) ActiveMQ(java JMS接口规范) RocketMQ(java) Kafka(大数据) (5)MQ的工作模式 简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式 (6)编写代码 JAVA ConnectionFactory host / port / username/ password/ virtualHost Connection Channel Channel.exchangeDeclare(exchangeName,exchangeType[fanout\direct\topic]) Channel.queueDeclare(queueName,true,false,false,null); Channel.queueBind(queue,exchange,routingKey); Channel.basicPublish(exchange,routingKey,null,body); Consumer consumer = new

Windows Mobile 进阶系列.WCF Mobile(Part 1)

末鹿安然 提交于 2020-01-13 04:11:48
相关文章 第零回.序和属性 第一回.真的了解.NET CF吗? 第二回.初窥CF类型加载器 第三回.让.NET CF CLR有条不紊 第四回.多窗体应用的性能与编程调试 第五回 . WCF Mobile(Part 1) 摘要 对于 Windows Mobile 来说, WCF 是一个崭新的概念,在 .NET CF v3.5 中提供了对 WCF 的支持,它是桌面 WCF(Windows Communication Foundation ,也称作 Indigo) 的一个子集。本文阐述了 Compact WCF 的功能和模型以及如何使用 WCF 轻松创建通信程序。 Keywords Windows Mobile, WCF, .NET CF, Web Service, C#,Lunch Launcher 1. Compact WCF -- 全新的 Mobile 编程模型 WCF 为那些需要用于通信的托管应用程序提供了一套新的统一的编程模型。它采用了一种可扩展信道的架构,使得应用程序能够工作在一个与传输介质和协议无关的“顶层”。 WCF 为开发者 ( 尤其是那些分布式应用程序的开发者 ) 提供了使用一套简单,稳定,易用的编程模型。使用 WCF 的编程模型,我们可以在应用程序中随意的收发信息,无论底层是用的 HTTP , TCP 还是 Email 进行通信。在大多数情况下

消息回调

廉价感情. 提交于 2020-01-12 05:30:09
0. 项目结构 rabbitmq04 rabbitmq-provider rabbitmq-consumer common 1. 什么是消息回调 消息回调,其实就是消息确认(生产者推送消息成功,消费者接收消息成功) 2. 为什么要进行消息确认 经常会听到丢消息的字眼, 对于程序来说,发送者没法确认是否发送成功,消费者处理失败也无法反馈, 没有消息确认机制,就会出现消息莫名其妙的没了,也不知道什么情况 3. 生产者推送消息[确认] 0.前提:使用直连交换机完成消息的发送和接收 1.在rabbitmq-provider项目的application.yml文件上,添加消息确认的配置项 #1.开启 confirm 确认机制 spring.rabbitmq.publisher-confirms=true #2.开启 return 确认机制 spring.rabbitmq.publisher-returns=true #3.设置开启Mandatory,才能触发回调函数,无论消息推送结果怎么样都强制调用回调函数 spring.rabbitmq.template.mandatory=true server : port : 8081 servlet : context-path : /rabbitmq - provider spring : rabbitmq : virtual-host : /

Spring Boot2.X整合消息中间件RabbitMQ原理简浅探析

半世苍凉 提交于 2020-01-10 09:35:00
目录 1、简单概述RabbitMQ重要作用 2、简单概述RabbitMQ重要概念 3、Spring Boot整合RabbitMQ 前言 RabbitMQ是一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件最主要的作用还是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC的调用等等。 @ 1、简单概述RabbitMQ重要作用 首先谈谈作用,你知道它有啥用才会有兴趣去知道它的重要概念,走进它,亲近它!上面已经提过了RabbitMQ主要是用来实现程序的异步和解耦。这里也主要讲解它是如何做到异步和解耦的。 1.1、异步 对比一下使用消息队列实现异步的好处: 1.2、解耦 至于解耦只能靠自己的对耦合的理解,这里就以文字的形式概述: 以上面消息队列实现异步场景分析:主线程依旧处理耗时低的入库操作,然后把需要处理的消息写进消息队列中,这个写入耗时可以忽略不计,非常快,然后,独立的发邮件子系统,和独立的发短信子系统,同时订阅消息队列,进行单独处理。处理好之后,向队列发送ACK确认,消息队列整条数据删除。这个流程也是现在各大公司都在用的方式,以SOA服务化各个系统