rabbitMQ是部署最广泛的开源消息队列代理(Message Broker)。什么是消息代理?其实就是一个中间软件模块,把消息从一个软件服务传递到另外一个软件服务上去。

为什么要这个消息代理?消息代理的主要作用是实现软件解耦,最大限度的减少程序之间的相互依赖,提高系统可用性以及可扩展性,同时还增加了消息的可靠传输和事务管理功能。

消息代理的种类有很多,比较出名的有亚马逊的AWS,阿帕奇的ActiveMQ,kafka,还有我们今天要重点介绍的RabbitMQ。

RabbitMQ参数配置:

使用一个RabbitMQ需要配置以下几个重要的参数

1.虚拟主机名称(Virtual host name),这个参数不是真正的IP地址或者域名,它是RabbitMQ内部的一个虚拟主机,就像是电脑安装了N台虚拟机,对外的名称一般是“/xxxx".

2.交换机名(Exchanges name):顾名思义,就是把生产者送来的消息来进行分发给下游的多个消费者,相当一个内部软交换机。交换机的类型有fanout,direct,topic,header,fanout类型类似以太网交换机的广播模式,把送来的消息给每个下游队列。direct类似单播(使用routingkey来指定目的队列),topic交换机类似组播,把消息传递给下面同一主题的队列,header交换机则忽略掉routingkey,使用hash数据结构来进行匹配和转发。

3.routingkey :前面讲过了,交换机在进行消息转发时候,要使用routingkey为关键字进行转发。

4.队列名称:可以为不同的消费者指定不同的队列,可以对消息进行分类到不同的队列进行转发。

RabbitMQ的工作模式

有6种下面分别介绍

1 最简单模式

这是一个最简单的生产者和消费者的队列,生产者把消息放入队列,消费者获得消息,这个模式只有一个消费者和一个生产者,当然一个队列就够了,这种模式只需要配置虚拟主机参数即可,其他参数默认就可以通信。

2.工作队列模式

这种模式出现了两个消费者,为了保证消费者之间的负载均衡和同步,需要在消息队列之间加上同步功能,工作队列(又名任务队列)背后的主要思想是避免立即执行资源密集型任务,必须等待它完成。相反,我们计划稍后完成任务。我们将任务封装为消息并将其发送到队列中。后台运行的一个工作进程将弹出任务并最终执行该任务。当你运行许多工人(消费者)时,任务将在他们之间分担。

3.交换机模式

实际上前两种模式也使用了交换机,只是我们没有设置,使用了默认的参数,交换机参数是可以配置的,如果消息配置的交换机参数和MQserver队列绑定(bind)的交换机名称相同,则转发,否则丢弃。

4.routing 转发模式

如上图所示,交换机要配置为direct类型,转发的规则变为检查队列的routingkey的值,如果routingkey值相同则转发,否则丢弃。

5.主题转发模式

这种模式下交换机要配置为topic类型,routingkey配置失效。发送到一个话题交换机(topic exchange)信息,不能是任意routing_key -它必须是一个单词的列表,用逗号分隔。这些词可以是任何东西,但通常它们指定连接到消息的某些特性。一些有效的路由键的例子:stock.usd.nyse、nyse.vmw、"quick.orange.rabbit",它更有特点是是可以模糊匹配,匹配规则如下:*(星号)可以代替一个词。#(哈希)可以代替零个或更多的单词。

6.RPC模式

如上图所示,这种模式主要使用在远程调用的场景下。一个应用程序需要另外一个应用程序来最终返回运行结果,这个过程可能是比较耗时的操作,使用这种模式是最合适的。

郑重声明:本文作品为原创,如转载须注明出处“头条号:物联网电子世界”。

rabbitmq direct 多个消费者_rabbitMQ消息队列入门介绍相关推荐

  1. rabbitmq java实例_RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)

    转载http://blog.csdn.net/u013142781 一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式 ...

  2. rabbitmq direct 多个消费者_RabbitMQ从零开始

    什么是RabbitMQ RabbitMQ是一个由ErLang语言编写的实现了AMQP(高级消息队列协议)的开源消息中间件 .RabbitMQ 支持消息的持久化.事务.拥塞控制.负载均衡等特性. 为什么 ...

  3. rabbitmq direct 多个消费者_RabbitMQ实战应用技巧

    1. RabbitMQ实战应用技巧 1.1. 前言 由于项目原因,之后会和RabbitMQ比较多的打交道,所以让我们来好好整理下RabbitMQ的应用实战技巧,尽量避免日后的采坑 1.2. 概述 Ra ...

  4. RabbitMQ 消息队列入门

    什么是 RabbitMQ MQ(Message Queue)消息队列 消息队列中间件,是分布式系统中的重要组件:主要解决异步处理.应用解耦.流量削峰等问题,从而实现高性能,高可用,可伸缩和最终一致性的 ...

  5. rabbitMQ消息队列 – 面板介绍及简单demo

    首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...

  6. Kafka消息队列 入门到精通 看这一篇就够了

    文章目录 第一章 概述 1.1 Kafka 的定义及特点 1.2 消息队列的介绍 1.3 Kafka 的基础架构 第二章 入门 2.1 Kafka 的安装部署 2.2 Kafka 命令行操作 第三章 ...

  7. java实现rabbitmq路由模型(routing/topic queues), 生产者 消费者 交换机 消息队列

    在fanout模型中,一条消息会被所有订阅的队列消费,即绑定了对应交换机的消费者,都能收到消息.但在某些场景下,我们希望不同的消息发送到不同的队列,被不同的消费者消费,此时就要用到Direct类型的交 ...

  8. java实现rabbitmq动态路由/话题模型(topic queues), 生产者 消费者 交换机 消息队列

    在routing路由模型中,我们实现了可以根据routingKey来选择性地将消息发送到对应的消息队列中,但是,这种模型不够灵活,比如最开始只有warn.info.error.三种类型的日志,但后面如 ...

  9. java实现rabbitmq发布/订阅模型(Publish/Subscribe queues), 生产者 消费者 交换机 消息队列

    发布/订阅模型又称扇出模型,或者是广播模型,可以有多个消费者,每个消费者有自己的队列,每个队列都要绑定到交换机,生产者发送的消息只需要发送到交换机,再由交换机决定要发送到哪些队列,生产者无法自行决定. ...

  10. RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)

    转载http://blog.csdn.net/u013142781 一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式 ...

最新文章

  1. 如何在小型pcb的移动设备上获得更好的无线性能
  2. 哪个工具编译java_用什么工具来编译JAVA啊?
  3. win2008在组件服务中未找到office组件服务
  4. ASP中Randomize随机函数的使用
  5. Shell脚本中$的用法
  6. lin通信ldf文件解析_手把手教你在CANoe中创建一个LIN通讯工程
  7. python绘制横向堆积柱状图_Python 堆叠柱状图绘制方法
  8. java月历组件_vue之手把手教你写日历组件
  9. Linux常用基本命令(rename,basename,dirname)
  10. java判断字符串是否包含某个字符串_Bash技巧:使用[[命令的 =~ 操作符判断字符串的包含关系...
  11. C# AE缓冲区分析 (转)
  12. springboot集成activiti6在线编辑器
  13. CheckBoxPreference--数据存储
  14. 腾讯云海外音视频技术架构 — 挑战和优化
  15. 【必看文件含发帖规范】2020年黑马程序员社区总版规发布!
  16. C# 红色警戒2无限金钱+电力负载 外挂源码示例
  17. 阿里校招应届生面试经验
  18. Linux学习笔记-shell脚本-log脚本函数
  19. 省钱兄同城跑腿小程序源码uniapp前端模版源码(小程序+APP+H5)
  20. python简单爬虫 指定汉字的笔画动图下载

热门文章

  1. State Machine Workflow 入门篇
  2. 181031每日一句
  3. Atitit session机制的实现 目录 1. Web状态管理 Cookie 和 Session。 token 1 2. session 管理设计 1 2.1. session 的存储(可以
  4. Atitit 艾提拉音频资源列表与统计 t6 六月份战果与7月份规划.docx 目录 1. 第一层次 原始资源类 采集资源类 1 1.1. K歌类采集资源 整理 1 1.2. K歌类资源初步分类
  5. Atitit 集合分组聚合操作sum count avg java版本groovy版本 目录 1. //按性别统计用户数 1 7. //按性别获取用户名称 1 16. //按性别求年龄的总和 1 2
  6. Atitit 提升记忆效率 有损压缩原理总结 目录 1. 常见方法 1 1.1. 抽象化提升一层 概念化 1 1.2. 骨架 ,目录化 大纲化 归纳整理 1 1.3. 提取关键词 ,摘要 ,
  7. Atitit 软件国际化原理与概论
  8. Atitit.线程 死锁 跑飞 的检测与自动解除 与手动解除死锁 java c# .net php javascript.
  9. paip.提升用户体验----自定义移位操作符重载
  10. paip.本机CVS环境搭建