RabbitMQ使用介绍及实例

消息列队不做过多解释了,直接讲讲rabbitmq的基本概念和路由模式。

一、安装及基本概念

rabbitmq是基于erlang编写的,所以安装rabbitmq之前需要安装erlang的环境,配置环境变量,百度即可。

connectionFactory、connection、channel不做过多介绍,基本步骤为

1.初始化连接工厂
2.从连接工厂获取连接
3.在连接中打开一个通道
4.在通道中声明交换机
5.在通道中声明一个列队(或多个)
6.绑定列队到交换机
7.进行相关操作

二、工作模式(路由模式)

生产者--消费者模式基本的模式是生产者生成消息,投入到列队中,需要的消费者(订阅)去列队拿消息进行处理。

rabbitmq在这里进行了一个中间处理,消息投递给哪个列队由路由器或者称交换机(Exchange)来处理,即生产者不直接将消息投递到列队中,而是投递到交换机,具体要投递到哪个列队,由交换机根据路由规则来确定。

类似于寄信,寄送人不直接将信件投递到派件员手中,而是投递到邮局,邮局根据信件的地址来决定到送到哪位派件员手上,进而送达收件人。这也是rabbitmq的一个特点和强大之处。

所以,rabbitmq的工作模式就是producer将消息投递到特定的exchange,queue按routing key订阅消息(例如,列队A订阅了交换机E的路由键为test的消息,那么一个生产者投递两个消息到E中两个消息,routing key分别为test和test2,那么A列队的只能收到路由键为test的消息),符合路由键的消息将被分发到具体的列队中。

交换机常用的路由方式有四种,fanout、direct、topic、header。header用的较少,自己也没用过,不做介绍了。

1.fanout是简单地将消息分发给所有列队,如图

列队1和列队2均能拿到两个消息(message、message2)

2.direct是根据路由键直接分发,如图:

如存在交换机E,列队1和列队2绑定到交换机的routing key分别为boys和girls。现在一个生产者分别按照routing key为boys和girls投递了消息message和message2,那么列队1中会得到message,列队2或得到message2。

3.topic可以说是是direct的扩展,引入了匹配模式,路由规则如下

生产者投递上述三个消息,则列队1拿到message和message3,列队2拿到message2和message3,列队3三个消息均能拿到。

三、实例

下面是本人在GitHub上面rabbitmq的demo:

入门级实例 https://github.com/CodeCrazyer/rabbitmq.git

与springMVC整合 https://github.com/CodeCrazyer/SpringRabbitQM.git

与springMVC整合的项目发送消息调接口可使用火狐浏览器插件RestClient、谷歌浏览器插件postman等。(postman需要FQ下载)

时间: 2024-11-09 14:19:20

RabbitMQ使用介绍及实例的相关文章

[Python]网络爬虫(四):Opener与Handler的介绍和实例应用(转)

在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info and geturl urlopen返回的应答对象response(或者HTTPError实例)有两个很有用的方法info()和geturl() 1.geturl(): 这个返回获取的真实的URL,这个很有用,因为urlopen(或者opener对象使用的)或许会有重定向.获取的URL或许跟请求URL不同. 以人人中的一个超级链接为例, 我们建一个urllib2_test10.py来比较一下原始URL和重定向的链接: [p

Android开发之IPC进程间通信-AIDL介绍及实例解析

一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信:   2. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身:linux除了支持Unix早期

Dockerfile命令介绍及实例

Dockerfile命令介绍及实例 当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形成一个新层.这些基础镜像可以用于创建新的容器.本篇文章将手把手教您如何从基础镜像,一步一步,一层一层的从Dockerfile构建容器的过程. 基础镜像可以用于创建Docker容器.镜像可以非常基础,仅仅包含操作系统:也可以非常丰富,包含灵巧的应用栈,随时可 以发布.当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形成一个新层.这些基础镜像可以用于创建新的容器.

Tstrings类简单介绍及实例

用TStrings保存文件;var  S: TStrings;begin  S := TStringList.Create();  { ... }  S.SaveToFile('config.txt', TEncoding.UTF8); Tstrings类简单介绍及实例 在DELPHI的程序开发过程中Tstrings类的使用是比较频繁的,下面就此类在DELPHI5的开发环境中进行一下简单的介绍及实例(注:本文只对tstrings类中的方法及属性进行介绍, 从其父类继承的属性及方法不属本文讨论之内

Json.Net介绍及实例

本系列教程假设读者已经对Json有一定的了解,关于Json在这里不多说.本系列教程希望能对读者开发涉及到Json的.Net项目有一定的帮助.本系列教程是根据官方文档资料和自己项目应用汇总而成.如果觉得本系列对你有用,望多多关注.本人还只是个未毕业的学生,水平有限,尽请指正. 一.Json.Net有什么用? Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Linq To JSON可以快速的读写Json,通过JsonSeri

数据字典生成工具之旅(6):NVelocity语法介绍及实例

本章开始将会为大家讲解NVelocity的用法,并带领大家实现一个简单的代码生成器. NVelocity是一个基于.NET的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由.NET代码定义的对象.从而使得界面设计人员与.NET程序开发人员基本分离. 阅读目录 NVelocity的常用功能简介 基本语法 实例介绍 工具源代码下载 学习使用 回到顶部 NVelocity的常用功能简介 1. 在页面中定义变量,并进行简单的运算

RabbitMQ简单介绍及安装使用

一.RabbitMQ简单介绍 二.安装配置1.安装环境 CentOS7 server1 190.168.3.250安装包依赖[[email protected] ~]# yum -y install gcc gcc-c++ m4 ncurses-devel openssl-devel2.安装RabbitMQ 按顺序安装:3.配置[[email protected] ~]# vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.14/ebin/rabbit.a

Rabbitmq 简单介绍,安装和go客户端使用

Rabbitmq 简单介绍,安装和go客户端使用 1,消息队列介绍 1.1 什么是消息队列? 消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户.消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列互交.消息会保存在队列中,直到接收者取回它.消息队列,一般我们会简称他为MQ(Message

Rabbitmq 相关介绍之单机集群配置

一.说明: 说到集群,大家应该都不陌生,为了提高性能需要配置集群,而在有的时候,我们需要在测试环境先测试然后灰度上线,所以这里介绍在一台服务器上配置rabbitmq集群 二.rabbitmq集群模式 1.普通模式:rabbitmq默认的集群模式 RabbitMQ集群中节点包括内存节点.磁盘节点.内存节点就是将所有数据放在内存,磁盘节点将数据放在磁盘上.如果在投递消息时,打开了消息的持久化,那么即使是内存节点,数据还是安全的放在磁盘.那么内存节点的性能只能体现在资源管理上,比如增加或删除队列(qu