原文: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. Robot Framework RIDE介绍

    快捷键 F8 -执行测试用例 F5 -查看关键字 Edit标签 测试项目和测试套件所提供的Edit标签是一致的,两者功能也一样.

  2. (原+修改)Pip使用国内源安装opencv

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/12000823.html 参考网址: https://www.imooc.com/article/34 ...

  3. django2外键,F表达式,Q表达式

    一对多 环境 两个类:书的类别和文章,一片文章只能有一个作者,一个作者可以有多个文章,这之间组成了一对多的关系 class Category(models.Model): category = mod ...

  4. 十一、yield生成器

    1.对比range 和 xrange 的区别 >>> print range() [, , , , , , , , , ] >>> print xrange() x ...

  5. ubuntu 18.04 设置静态ip方法

    1. 前言 本教程将会演示如何设置Ubuntu16.04 Server版和Ubuntu18.04 Server版系统的静态固定IP地址. 2. 确认你要修改的网卡号 先确认你要修改的网卡号,假设你的服 ...

  6. nginx 常用的中间件

    1.--with-http_stub_status_module nginx客户端状态 # 打开default.conf文件 vim /etc/nginx/conf.d/default.conf # ...

  7. bloginfo()用法小结|wordpress函数

    bloginfo()显示关于您的wordpress站点的信息,主要是从您的用户配置文件和WordPress管理屏幕的一般设置中收集的信息.它可以在模板文件的任何地方使用.这总是将结果打印到浏览器.如果 ...

  8. macOS Catalina 的zsh升级

    MacOS最近做了一个大版本升级,这次升级中对开发者有个很大的更新是,模式的shell变成了zsh,官方提供了升级配置文档:https://support.apple.com/zh-cn/HT2080 ...

  9. USACO Poker Hands

    洛谷 P3078 [USACO13MAR]扑克牌型Poker Hands 题目传送门 JDOJ 2359: USACO 2013 Mar Silver 1.Poker Hands JDOJ传送门 题目 ...

  10. Jmeter函数助手—自带方法

    1.${__time()}---->当前时间,一串数字格式 2.${__time(yyyy-MM-dd)}----->当前日期,年-月-日格式 3.${__time(yyyy-MM-dd ...