exchange

消息中间件之RabbitMQ

旧街凉风 提交于 2019-11-30 21:03:59
一、RabbitMQ简介 1、简介 RabbitMQ是一个遵循AMQP协议的消息中间件,它从生产者接收消息并递送给消费者,在这个过程中,根据规则进行路由,缓存与持久化。 基于erlang语言开发具有高可用高并发的优点,适合集群服务器 可靠性:包括消息持久化,消费者和生产者的消息确认 灵活路由:遵循AMQP协议,支持多种Exchange类型实现不同路由策略 分布式:集群的支持,包括本地网络与远程网络 高可用性:支持主从备份与镜像队列 多语言支持:支持多语言的客户端 WEB界面管理:可以管理用户权限,exhange,queue,binding,与实时监控 访问控制:基于vhosts实现访问控制 调试追踪:支持tracing,方便调试 开源免费 【较其他MQ】 - Apache ActiveMQ 比较出名,但是有丢失消息的风险。 - ZeroMQ延迟很低、支持灵活拓扑,但是不支持消息持久化和崩溃恢复 2、核心概念 producer:消息生产者,就是投递消息的程序 consumer:消息消费者,就是接受消息的程序 Message是RabbitMQ中的消息体 Broker:简单来说就是消息队列服务器实体 channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务 Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列

消息中间件Rabbitmq(二)-使用详解

痴心易碎 提交于 2019-11-30 20:57:33
Rabbitmq 是基于amqp(高级消息队列协议)实现的队列技术,在他之上可以完成多种类型的消息转发模型。 下面列举一些常用的消息转发场景,在rabbitmq中是怎样实现的。 1.原理 先来看一下rabbitmq消息转发的原理,便于理解消息转发以及怎样实现常见的消息转发模型。 1.1生产者 1.生产者创建连接,并创建通道连接rabbitmq 2.使用routing key绑定exchange和队列,可以绑定多个routing key到不同的队列。 3.生产者生产消息发送给exchange 4.exchange根据routing key匹配到对应队列名字,把消息转发到指定的queue上,消息会暂存在队列中,等待消费者来消费。 1.2消费者 1.消费者创建连接,并创建通道连接rabbitmq 2.消费者消费指定队列消息 注意:exchange、queue都必须要提前创建或者使用系统默认的也可以。 1.3exchange exchange分为4种,分别是 1.direct,直接转发。exchange通过精确匹配routing key发送消息给队列 2.fanout,广播。会将消息广播到所有绑定到这个exchange的队列,无视发送消息时指定的routingkey。 3.topic,发布、订阅。routing可以可以使用通配符(#、*)来根据主题发送消息到不同的队列。 4.Headers

RabbitMQ基础概念详细介绍

空扰寡人 提交于 2019-11-30 20:57:22
你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。 消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如: Python 、Ruby、.NET、 Java 、JMS、C、 PHP 、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 下面将重点介绍RabbitMQ中的一些基础概念,了解了这些概念,是使用好RabbitMQ的基础。 ConnectionFactory、Connection、Channel

RabbitMQ系列(一):Windows下RabbitMQ安装及入门

扶醉桌前 提交于 2019-11-30 20:40:54
1.Windows下安装RabbitMQ需要以下几个步骤 (1): 下载erlang ,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好,安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录,同时将%ERLANG_HOME%\bin加入到Path中,最后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功; (2): 下载RabbitMQ ,下载地址:http://www.rabbitmq.com/,同样双击.exe进行安装就好(这里需要注意一点,默认的安装目录是C:/Program Files/....,这个目录中是存在空格符的,我们需要改变安装目录,貌似RabbitMQ安装目录中是不允许有空格的,我之前踩过这个大坑); (3): 安装RabbitMQ-Plugins ,这个相当于是一个管理界面,方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况,安装方法是:打开命令行cd进入rabbitmq的sbin目录(我的目录是:E:\software\rabbitmq\rabbitmq_server-3.6.5\sbin),输入:rabbitmq-plugins

RabbitMQ基础概念详细介绍

此生再无相见时 提交于 2019-11-30 20:40:06
转至: http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。 消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 下面将重点介绍RabbitMQ中的一些基础概念,了解了这些概念,是使用好RabbitMQ的基础。

RabbitMQ安装以及入门学习

こ雲淡風輕ζ 提交于 2019-11-30 12:10:13
RabbitMQ学习,这里推荐几篇经典的文章,个人感觉受益匪浅 rabbitmq安装: https://blog.csdn.net/cairuojin/article/details/81912033 偏理论: https://blog.csdn.net/whoamiyang/article/details/54954780 偏实战: https://blog.csdn.net/leixiaotao_java/article/details/78924863 RabbitMQ连接配置 import com . rabbitmq . client . Connection ; import com . rabbitmq . client . ConnectionFactory ; import java . io . IOException ; /** * @program: RabbitmqOne * @description: * @author: Hyz.gt * @create: /09/22 17:41 **/ public class ConnectionUtils { public static Connection getConnection ( ) throws IOException { ConnectionFactory factory = new

RabbitMq运行原理浅析

半腔热情 提交于 2019-11-30 10:20:14
转载: https://blog.csdn.net/Evankaka/article/details/80977027 1.RabbitMq简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。下面将重点介绍RabbitMQ中的一些基础概念,了解了这些概念,是使用好RabbitMQ的基础。AMQP协议介绍RabbitMQ就必须先介绍AMQP协议,因为RabbitMQ是它的一种实现而已。 2.RabbitMq模型 Server(broker) 接受客户端连接,实现AMQP消息队列和路由功能的进程,可以理解为邮局。 Virtual Host 其实是一个虚拟概念,类似于权限控制组,一个Virtual

springboot之RabbitMQ详解

血红的双手。 提交于 2019-11-30 09:55:54
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC的调用等等。 RabbitMQ具有高可用性、高性能、灵活性等特点。 RabbitMQ介绍 RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端

RebbitMQ

回眸只為那壹抹淺笑 提交于 2019-11-30 09:13:26
核心概念 Producer:消息生产者,即投递消息的程序。 Broker:消息队列服务器实体。单个机器可以部署多个Broker Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。 Binding:绑定,它的作用就是把 Exchange 和 Queue 按照路由规则绑定起来。 Queue:消息队列载体,每个消息都会被投入到一个或多个队列。 Consumer:消息消费者,即接受消息的程序。 Exchange 收到消息时,他是如何知道需要发送至哪些 Queue 呢?这里就需要了解 Binding 和 RoutingKey 的概念: Binding 表示 Exchange 与 Queue 之间的关系,我们也可以简单的认为队列对该交换机上的消息感兴趣,绑定可以附带一个额外的参数 RoutingKey。Exchange 就是根据这个 RoutingKey 和当前 Exchange 所有绑定的 Binding 做匹配,如果满足匹配,就往 Exchange 所绑定的 Queue 发送消息,这样就解决了我们向 RabbitMQ 发送一次消息,可以分发到不同的 Queue。RoutingKey 的意义依赖于交换机的类型。 Exchange 的三种主要类型: Fanout(广播) 、 Direct(直接) 和 Topic(通配符匹配) Fanout Exchange 会忽略