原文:Net操作RabbitMQ

1 安装

RabbitMQ官网下载地址:

RabbitMQ的服务器-3.7.14.exe

RabbitMQ是由Erlang语言开发的,所以使用RabbitMQ需要安装Erlang。

Erlang官网下载地址:

otp_win64_21.3.exe

RabbitMQ引用:

2 管理界面

安装了Rabbitmq后,默认也安装了该管理工具,执行命令即可启动

## 先定位到rabbitmq安装目录
rabbitmq-plugins enable rabbitmq_management
  • 1
  • 2



启动后,直接在浏览器地址输入:http://localhost:15672/ 默认账号密码都是:guest

如果无法在web页打开管理界面,可以重启下RabbitMQ

net stop RabbitMQ && net start RabbitMQ
  • 1

管理界面相关操作参考博文:rabbitmq后台管理界面

3 RabbitMQ的基本概念

rabbitmq:采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦。

AMQP:高级消息队列协议使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能。

Broker:简单来说就是消息队列服务器实体

Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列

Queue:消息队列载体,每个消息都会被投入到一个或多个队列

Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来

Routing Key:路由关键字,exchange根据这个关键字进行消息投递

vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离

producer:消息生产者,就是投递消息的程序

consumer:消息消费者,就是接受消息的程序

channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务

4 RabbitMQ的六种工作模式

六种模式官方文档:

https://www.rabbitmq.com/getstarted.html

自己写的DEMO链接:

https://download.csdn.net/download/zt102545/11656242

4.1 简单模式



说明

 一个生产者P发送消息到队列Q,一个消费者C接收。

生产者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建队列queue,使用通道channel向队列中发送消息。

消费者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建队列queue, 创建消费者consumer并监听队列,从队列中读取消息并自动应答。

实现效果

生产者:



消费者:

4.2 工作模式



说明

 一个生产者,多个消费者,每个消费者获取到的消息唯一,多个消费者只有一个队列。

生产者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建一个持久的队列queue,用通道channel创建一个消息属性,使消息属性持久,不受重启影响。使用通道channel向队列中发送消息。

消费者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建一个持久的队列queue并设置每次只读取一条消息,创建消费者consumer并监听队列,获取消息处理后手动应答。

实现效果

生产者:



消费者:

4.3 发布/订阅模式



说明

 一个生产者将消息发送到交换机,交换机以广播的模式,将消息发送到绑定到该交换机的队列上,消费者从队列里获取消息。

生产者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建交换机并指定交换机类型为fanout,使用通道向交换机发送消息。

消费者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建交换机并指定交换机类型为fanout,使用通道channel创建队列queue并绑定到交换机上, 创建消费者consumer并监听队列,从队列中读取消息并自动应答。

实现效果

生产者:



消费者:

4.4 路由模式



说明

 生产者发送消息到交换机并且要指定路由key,消费者将队列绑定到交换机时需要指定绑定key,交换机根据路由key将消息分发给相应的绑定key的队列。

生产者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建交换机并指定交换机类型为Direct,使用通道向交换机发送消息并指定路由key值。

消费者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建交换机并指定交换机类型为Direct,使用通道channel创建队列queue后绑定到交换机上并指定绑定key, 创建消费者consumer并监听队列,从队列中读取消息并自动应答。

实现效果

生产者:



消费者:

4.5 主题模式



说明

 生产者P发送消息到交换机X,交换机类型为Topic,交换机根据绑定队列的routing key的值进行通配符匹配;符号#:匹配一个或者多个词lazy.# 可以匹配lazy.irs或者lazy.irs.cor

符号* :只能匹配一个词lazy.* 可以匹配lazy.irs或者lazy.cor

生产者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建交换机并指定交换机类型为Topic,使用通道向交换机发送消息并指定路由key值。

消费者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建交换机并指定交换机类型为Topic,使用通道channel创建队列queue后绑定到交换机上并指定绑定key, key值带通配符,创建消费者consumer并监听队列,从队列中读取消息并自动应答。

实现效果

生产者:



消费者:

4.6 RPC



说明

 消费者C主动向生产者P发出请求消息Request,该消息带有CorrelationId和ReplyTo属性,分别用于识别哪一条消息和哪个队列。生产者P收到请求后处理消息,将处理后的消息根据CorrelationId和ReplyTo属性向消费者C响应消息。

生产者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建队列queue, 创建消费者consumer并监听队列,从队列中读取消息,从消息里获取客户端通道的属性BasicProperties,根据属性BasicProperties获取到响应的队列,向响应的队列发送处理后的消息。

消费者实现思路

 创建连接工厂factory,从连接工厂中获取连接connection,使用连接创建通道channel,使用通道channel创建随机队列queue,创建消费者consumer并监听队列,从队列中读取消息。使用通道channel创建通道属性BasicProperties,生成一个GUID赋值给CorrelationId,随机队列名称赋值给ReplyTo,服务端会根据这两个属性响应消息。最后使用通道给服务端发送消息。

实现效果

生产者:

消费者:

发布了30 篇原创文章 · 获赞 5 · 访问量 1万+

Net操作RabbitMQ的更多相关文章

  1. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  2. Python操作RabbitMQ

    RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消 ...

  3. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  4. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  5. python - 操作RabbitMQ

    python - 操作RabbitMQ     介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...

  6. 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ

    本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...

  7. Python之路第十二天,高级(4)-Python操作rabbitMQ

    rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...

  8. python操作---RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...

  9. Python 之路:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    一.Memcached Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负债.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...

  10. 一个C#操作RabbitMQ的完整例子

    一.下载RabbitMQ http://www.rabbitmq.com/install-windows.html 二.下载OTP http://www.erlang.org/downloads 三. ...

随机推荐

  1. Elasticsearch 在 7.X版本中去除type的概念

    背景说明 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库. El ...

  2. ng-zorror-antd------Input输入框

    使用 ng-zorror-antd 来美化界面,带着问题挖掘技术: 一:基本使用 效果图: 问题一:如何人为控制输入框长度,如上效果图,让一个输入框长,一个输入框短?(注意:该输入框是最简单的输入框, ...

  3. Flask的实例化参数及对app的配置

    目录 1.调试模式初测 2.app.config中的其他配置参数详解 3.修改config配置的方式(from_object用法) 3.1直接对app.config进行修改: 3.2使用类的方式导入: ...

  4. 字符串比较==和equals的区别

    <Stack Overflow 上 370万浏览量的一个问题:如何比较 Java 的字符串?> 比较详细的比较了==和equals方法的区别. 那借此机会,我就来梳理一下 Stack Ov ...

  5. 重复的DNA序列[哈希表] LeetCode.187

    所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG".在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助. 编写一个函数 ...

  6. jquery-ui提供的拖拽方法

    项目当中遇到了任意拖动div标签的功能,找到了jqueryui提供的draggable的插件,这个插件可以实现任意的div的移动,也可以移动到整个屏幕或者在父元素的范围内进行移动. 插件的api    ...

  7. Vue中美元$符号的意思与vue2.0中的$router 和 $route的区别

    vue的实例属性和方法 除了数据属性,Vue 实例还暴露了一些有用的实例属性与方法.它们都有前缀 $,以便与用户定义的属性区分开来.例如: var data = { a: 1 } var vm = n ...

  8. GIL全局解释器锁及协程

    GIL全局解释器锁 1.什么是GIL全局解释器锁 GIL本质是一把互斥锁,相当于执行权限,每个进程内都会存在一把GIL同一进程内的多线程,必须抢到GIL之后才能使用Cpython解释器来执行自己的代码 ...

  9. Free Professional Resume Examples and Writing Tips

    https://www.thebalancecareers.com/free-resume-examples-and-writing-tips-2063596 Do you need to write ...

  10. tomcat启动后,跳转到项目指定页面