RabbitMQ

RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例

巧了我就是萌 提交于 2020-04-18 07:34:48
你是否听说过或者使用过 队列 ? 你是否听说过或者使用过 消息队列 ? 你是否听说过或者使用过 RabbitMQ ? 提到这几个词,用过的人,也许觉得很简单,没用过的人,也许觉得很复杂,至少在我没使用消息队列之前,听别人提到消息队列,都感觉很复杂,很高深。 好了,言归正传,本篇博客我们就讲解下什么是消息队列,RabbitMQ环境的安装配置,最后通过一个Hello World示例了解下RabbitMQ的使用方法。 1. 基本概念讲解 1.1 队列(Queue) 队列是常用的数据结构之一,是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。 进行插入操作的端称为队尾,进行删除操作的端称为对头。 在Java中,java.util包下已经有队列的相关实现,我们可以直接使用。 1.2 消息队列(Message Queue) 消息 是计算机/应用间传送的数据单位,可以非常简单,例如只包含文本字符串,也可以很复杂,可能包含嵌入对象。 消息队列 是在消息的传输过程中保存消息的容器。 消息传输时,先发送到队列,队列的主要目的是提供路由并保证消息的传递,如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功的传递它。 可以把消息队列理解成快递公司,你需要寄一个物件(消息)给你的朋友,快递公司收到物件会保证物件送到你的朋友手中

消息中间件——RabbitMQ(五)快速入门生产者与消费者,SpringBoot整合RabbitMQ!

 ̄綄美尐妖づ 提交于 2020-04-18 07:34:32
前言 本章我们来一次快速入门RabbitMQ——生产者与消费者。需要构建一个生产端与消费端的模型。什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker。 我们的消费端进行监听RabbitMQ,当发现队列中有消息后,就进行消费。 1. 环境准备 本次整合主要采用SpringBoot框架,需要对SpringBoot的使用有一定了解。 2.大概步骤 我们来看下大概步骤: ConnectionFacorty:获取连接工厂 Connection:一个连接 Channel:数据通信信道,可发送和接收消息 Queue:具体的消息存储队列 Producer & Consumer 生产者和消费者 这个连接工厂需要配置一些相应的信息,例如: RabbitMQ节点的地址,端口号,VirtualHost等等。 Channel是我们RabbitMQ所有消息进行交互的关键。 3. 项目实战 3.1 连接工厂 /** * * @ClassName: ConnectionUtils * @Description: 连接工具类 * @author Coder编程 * @date 2019年6月21日 上午22:28:22 * */ public class ConnectionUtils { public static Connection getConnection() throws

RabbitMq核心概念和术语

倾然丶 夕夏残阳落幕 提交于 2020-04-18 07:34:14
简介 越来越多的消息中间件很容易让人产生混淆,在学习一种消息中间件的时候,最好先了解他的几种抽象概念,方便你理解,明白了这些概念,你学习起来的时候也就得心应手,同时也是使用好RabbitMQ的基础。 核心概念 Producer Message Consumer AMQP Queue Message acknowledgment Message durability Prefetch count Exchange RoutingKey Binding Binding key Exchange Types <!--more--> AMQP Producer Message Consumer 过于简单,我就不介绍了。AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写。用于在分布式系统中存储转发消息 Message acknowledgment message ackonwledgment 即消息回执,消费者在消费完消息后发送一个回执给rabbitmq

RabbitMQ(一):RabbitMQ快速入门

与世无争的帅哥 提交于 2020-04-18 07:33:51
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解,本文是RabbitMQ快速入门文章,主要内容包括RabbitMQ是什么、RabbitMQ核心概念、常用交换器类型、用Docker安装RabbitMQ等。 RabbitMQ简介 以熟悉的电商场景为例,如果商品服务和订单服务是两个不同的微服务,在下单的过程中订单服务需要调用商品服务进行扣库存操作。按照传统的方式,下单过程要等到调用完毕之后才能返回下单成功,如果网络产生波动等原因使得商品服务扣库存延迟或者失败,会带来较差的用户体验,如果在高并发的场景下,这样的处理显然是不合适的,那怎么进行优化呢?这就需要消息队列登场了。 消息队列提供一个异步通信机制,消息的发送者不必一直等待到消息被成功处理才返回,而是立即返回。消息中间件负责处理网络通信,如果网络连接不可用,消息被暂存于队列当中,当网络畅通的时候在将消息转发给相应的应用程序或者服务,当然前提是这些服务订阅了该队列。如果在商品服务和订单服务之间使用消息中间件,既可以提高并发量,又降低服务之间的耦合度。 RabbitMQ就是这样一款我们苦苦追寻的消息队列。RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。 RabbitMQ是使用Erlang语言来编写的

RabbitMQ erlang "hello world"

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-18 06:43:30
官方文档: http://www.rabbitmq.com/tutorials/tutorial-one-python.html 下文为翻译和erlang客户端的例子 RabbitMQ是一个消息中间件,它主要的思想非常简单:接收和发送消息。你可以把RabbitMQ想象成一个邮局:当你把信件放入邮筒的时候你非常确定邮递员会把你的信件投递给信件的接收者。在这个比喻里面,RabbitMQ是一个邮筒,邮局以及邮递员。 RabbitMQ与邮局的主要区别在于,RabbitMQ不处理信件,取而代之的是它接收,存储并且发送二进制数据,也就是所谓的消息。 RabbitMQ 与 messaging 通常情况下,使用一些术语。 生产也就是发送的意思,发送消息的程序叫做生产者,我们把它画成这样,使用"p"; 队列是邮箱的名字,它存在于RabbitMQ的内部,虽然消息在RabbitMQ和你的应用程序之间流转,但是消息只能被存储在一个队列里面。队列没有任何限制,只要你愿意,它可以存储任意多个消息,本质上,队列是一个没有限制的buffer。一个队列可以接收多个生产者的消息,多个消费者也可以从一个队列里面接收消息。队列一般用下图表示,上面是队列的名字: 消费其实就是接收的意思。一个消费者就是一个等待接收消息的应用程序。消费者一般用下图表示: 值得注意的是,生产者,消费者和RabbitMQ不需要部署在同一台物理机上

消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!

柔情痞子 提交于 2020-04-18 06:43:04
前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架构模型是什么样子的? RabbitMQ消息是如何流转的? 1. 初识RabbitMQ RabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间 共享数据 (RabbitMQ能够实现跨语言跨平台的机制,),RabbitMQ是使用 Erlang 语言来编写的,并且RabbitMQ是基于 AMQP 协议的。 仅仅通过上面一句话,相信大家一定有很多疑惑和问题。 RabbitM成熟度到底怎么样? 业界使用度怎么样?哪些大厂在使用?为什么? 包括RabbitMQ到底都有哪些特点? RabbitMQ为什么要用Erlang语言去编写? 什么是AMQP协议?AMQP协议里面的具体的规范又是什么? 我相信大家跟我一样都会有这样的疑惑。那么我们一起来学习一RabbitMQ吧。 我们来了解第一个问题。 2. 互联网大厂为什么选择RabbitMQ? 业界使用度怎么样?哪些大厂在使用?为什么?都有哪些优点? 据我了解:滴滴、美团、去哪儿、头条... 这些互联网大厂都会采用RabbitMQ作为它底层的消息通信的一个基础组件。根本原因: 开源、性能优秀、稳定性保障

我们为什么要使用RabbitMQ?

夙愿已清 提交于 2020-04-18 05:54:27
一、前言 这篇文章就是讲RabbitMQ的好处,你可能要说RocketMQ很好呀,我们主要看上的就是RabbitMQ支持多语言的客户端,很符合我们公司的现状,不要我们花费功夫去搞一个客户端,所以下面请大家不要吐槽,我们就来静心听听RabbitMQ的好; 二、RabbitMQ 在消息队列的一发一收中,我们来看下RabbitMQ怎么让我们放心使用的?首先我们来看下RabbitMQ发收的过程: 发消息的过程(生产者): 1.连接到RabbitMQ Borker,建立一个连接(Connection),开启一个信道(Channel); 2.声明交换机(Exchange); 3.声明队列(Queue); 4.通过路由键(Binding Key)将交换机与路由器绑定; 5.发送消息(消息包含路由键(Routing Key)和交换机等内容)到RabbitMQ Borker; 6.交换机根据接收到路由键去匹配到相应的队列中,如果找到则放入到对应的队列中,找不到则退回(这里是根据配置信息来的); 7.关闭; 收消息的过程(消费者): 1.连接到RabbitMQ Borker,建立一个连接,开启一个信道; 2.请求接收RabbitMQ Borker中队列的消息; 3.等待RabbitMQ Borker回应返回队列中相应的消息; 4.消费者接收到消息,返回确认(ack); 5

RabbitMQ与.net core(四) 消息的优先级 与 死信队列

痴心易碎 提交于 2020-04-18 00:06:08
1.消息的优先级 假如现在有个需求,我们需要让一些优先级最高的通知推送到客户端,我们可以使用redis的sortedset,也可以使用我们今天要说的rabbit的消息优先级属性 Producer代码 using RabbitMQ.Client; using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Threading.Tasks; namespace RabbitMQConsole { class Program { static void Main( string [] args) { ConnectionFactory factory = new ConnectionFactory(); factory.HostName = " 39.**.**.** " ; factory.Port = 5672 ; factory.VirtualHost = " / " ; factory.UserName = " root " ; factory.Password = " root " ; var exchange = " change4 " ; var route = " route2 " ; var queue9 = "

RabbitMQ pod web username and password?

百般思念 提交于 2020-04-17 21:29:25
问题 I am trying to learn more about Kubernetes in my spare time. At the moment I am trying to setup RabbitMQ, so I went here: https://github.com/bitnami/charts/tree/master/bitnami/RabbitMQ. I have done this: helm install my-release --set rabbitmq.username=admin,rabbitmq.password=secretpassword,rabbitmq.erlangCookie=secretcookie bitnami/rabbitmq then: kubectl port-forward --namespace default svc/my-release-rabbitmq 15672:15672 I can then browse to http://localhost:15672/ Powershell says this: I am

RabbitMQ pod web username and password?

此生再无相见时 提交于 2020-04-17 21:27:27
问题 I am trying to learn more about Kubernetes in my spare time. At the moment I am trying to setup RabbitMQ, so I went here: https://github.com/bitnami/charts/tree/master/bitnami/RabbitMQ. I have done this: helm install my-release --set rabbitmq.username=admin,rabbitmq.password=secretpassword,rabbitmq.erlangCookie=secretcookie bitnami/rabbitmq then: kubectl port-forward --namespace default svc/my-release-rabbitmq 15672:15672 I can then browse to http://localhost:15672/ Powershell says this: I am