rabbitmq 传递文件

RabbitMQ是一个强大的消息代理,可用于实现不同的消息传递模式。 即使有出色的教程 (使用不同的语言和框架),也很难理解这些概念。 在这篇文章中,我想展示一些可以用RabbitMQ实现的不同范例,以及为什么要为某些概念而苦恼。

使用队列发送和接收

最简单的方法是使用队列发送消息,并让使用者从同一队列中读取数据。

没有什么可以阻止您拥有多个使用者,每个使用者都可以处理队列中的消息。 使用完一条消息后,该消息将从队列中消失。

当具有需要执行的任务并且无论哪个消费者处理任务都无关紧要时,这特别适合。

发布/订阅

并非所有用例都只消耗一条消息的方式。 通常,您希望拥有多个应该全部处理所有消息的使用者。 一个示例可以是将对象存储在不同的数据存储中(例如,搜索索引和数据库),另一种是域事件,例如已提交并应由订单管理系统和库存系统处理的订单。 这需要一种发布/订阅机制,RabbitMQ当然已经涵盖了这一点。

与仅使用队列相比,最大的区别是在这种情况下,生产者不再直接写队列。 一个称为Exchange的实例将接受邮件并将其转发到一个或多个队列。

要使用经典的发布/订阅模型,您可以使用FanoutExchange将消息转发到一个或多个队列。 要连接交换和队列,您需要声明一个绑定,在这种情况下,特定交换的所有消息都应转发到特定队列。

每个使用者都从专用队列中读取消息。 这也意味着您将需要为每个正在监听的使用者绑定一个绑定。

使用RabbitMQ,可以使用在使用者停止监听时自动删除的队列。 这允许消费者加入和离开时具有非常动态的行为。

看我们的第一个示例,您可能想知道为什么有不同的方式来发送消息,发送队列和进行交换。 事实证明,发送到队列确实是不可能的。 总是存在一个默认交换,它仅转发消息。 此默认交换仅获取消息的某个路由键(即队列名称),然后将它们以相同的名称放入队列中。

发布/订阅过滤

除了将消息发送到已注册进行交换的所有队列之外,还可以根据路由密钥对消息进行过滤。 所有消息都被发送到一个交换机,该交换机通过查看路由键来决定将消息发送到哪个队列。

如果您想与路由键完全匹配,请执行DirectExchange。

将DirectExchange绑定到队列时,您需要提供一个路由密钥,该路由密钥将确定将为此队列考虑的路由密钥。 如果要分配多个路由键,则可以为同一队列添加多个绑定。

您还可以提供通配符来确定应将哪些路由密钥用于队列,这可以通过使用需要分层路由密钥的TopicExchange来完成。

一开始,这两个交流-直接交流和主题交流-可能最让我感到困惑。 当涉及到主题时,我正在考虑经典的发布订阅系统,例如使用FanoutExchange时。 交换名称是客户端正在注册的主题。 但是这里的主题是指在现有交换机上的一种路由。 与DirectExchange相同:我希望直接交换类似于第一个直接将消息发送到队列的示例。 但是在这种情况下,直接交换是指直接路由,因此您始终需要为此提供路由密钥。

如果您想进一步了解各种交流,请转到RabbitMQ网站上的教程 。

翻译自: https://www.javacodegeeks.com/2018/03/messaging-with-rabbitmq-2.html

rabbitmq 传递文件

rabbitmq 传递文件_使用RabbitMQ进行消息传递相关推荐

  1. rabbitmq 传递文件_RabbitMQ:计划邮件传递

    rabbitmq 传递文件 本月初,我在ComoRichWeb上的RabbitMQ上做了一个演讲,与会人员提出的一个问题是"是否可以发布一条消息供以后使用?" 我回答说,就我所知, ...

  2. rabbitmq可靠性投递_解决RabbitMQ消息丢失问题和保证消息可靠性(一)

    工作中经常用到消息中间件来解决系统间的解耦问题或者高并发消峰问题,但是消息的可靠性如何保证一直是个很大的问题,什么情况下消息就不见了?如何防止消息丢失?下面通过这篇文章,我们就聊聊RabbitMQ 消 ...

  3. rabbitmq 取消消息_认识RabbitMQ从这篇文章开始

    关于RabbitMQ 出身:诞生于金融行业的消息队列 语言:Erlang 协议:AMQP(Advanced Message Queuing Protocol 高级消息队列协议) 关键词:内存队列,高可 ...

  4. 通过小程序给公众号传递消息_多输入现场消息传递应用程序概念

    通过小程序给公众号传递消息 by Dawid Woldu 戴维德·沃尔杜(Dawid Woldu) 多输入现场消息传递应用程序概念 (A multi-input field messaging app ...

  5. rabbitmq 查询版本_基于rabbitmq解决分布式事务

    分布式事务要解决的问题是保证二个数据库数据的一致性,本地事务ACID属于刚性事务,基于CAP理论,分布式事务的核心要点柔性事务,最终一致性. 基于rabbitmq解决分布式事务要点如下 生产者采用发送 ...

  6. kafka传递文件_从面试角度一文学完 Kafka

    往期置顶资源 可自取 数据结构和算法刷题笔记.pdf下载 找工作简历模板集(word格式)下载 Java基础核心知识大总结.pdf 下载 68道C/C++常见面试题(含答案)下载 Java后端开发学习 ...

  7. rabbitmq java文档_《RabbitMQ官方文档》订阅与发布

    之前的教程中,我们创建了一个工作队列.在一个工作队列背后的假设是将每个任务都准确地交付给一个工作人员.在这个环节我们要做些完全不同的事情-我们将要把一个消息传递给多个消费者.这种模式被称为" ...

  8. .net 实时通信_基于 RabbitMQ 的实时消息推送

    实现服务器端推送的几种方式 Web 应用都是基于 HTTP 协议的请求/响应模式,无法像 TCP 协议那样保持长连接,因此 Web 应用就很难像手机那样实现实时的消息推送.就目前来看,Web 应用的消 ...

  9. Rabbitmq消息中心_消息追踪

    消息追踪方案 一.消息追踪介绍 消息中心的消息追踪需要使用Trace实现,Trace是Rabbitmq用于记录每一次发送的消息,方便使用Rabbitmq的开发者调试.排错.可通过插件形式提供可视化界面 ...

最新文章

  1. 结课作业:云计算在物联网中的应用发展
  2. 关于Oracle Stream的安装、配置和使用
  3. 【PAT乙级】1045 快速排序 (25 分)
  4. SAP财务中国本土好内容
  5. 前端学习(1654):前端系列实战课程之js运行代码
  6. 最常被利用的三大 API 漏洞:是什么、为什么、如何阻止?
  7. 2017-11-17 为Python添加中文关键字 1
  8. HDU1263 水果【map】
  9. 信息系统集成监理费收取标准_信息系统工程监理与咨询服务收费参考标准起草说明...
  10. 解决 mac 蓝牙鼠标、键盘经常总是 断开连接的问题
  11. 矽力杰代理商的增长与模拟信号
  12. 基于互质阵的DOA估计
  13. Spring Boot (Filter)过滤器的实现以及使用场景
  14. Linux中chmod命令的用法
  15. Sqlmap速查表/功能移植/Python批量检测SQL注入
  16. 安装任何版本ActiveSync都出错原因
  17. 如何寻找创业合伙人、搭建创业团队?
  18. CGLIB对类做动态代理时,无法拦截static修饰的方法和final修饰的方法
  19. 博客13周年:网站暗淡的一年
  20. Python复习系列:Python基础知识(三)

热门文章

  1. [省选联考 2020 A/B 卷] 冰火战士(树状数组上二分)
  2. AT2567-[ARC074C]RGB Sequence【dp】
  3. 51nod1600-Simple KMP【SAM,树链剖分】
  4. P3586-[POI2015]LOG【线段树】
  5. ATcoder-Replace Digits【线段树】
  6. P2472-[SCOI2007]蜥蜴【网络流】
  7. nssl1185-试卷【状态压缩】
  8. 【jzoj】2018.2.5NOIP普及组——C组模拟赛
  9. 【数论】能量采集(P1447)
  10. 【DP】【递归】分离与合体