美文网首页
rabbitmq 入门

rabbitmq 入门

作者: knull666 | 来源:发表于2020-04-17 14:17 被阅读0次

[TOC]

rabbitmq

架构

rabbitmq 基本架构

关键部件

  • consumer/producer
  • exchange
  • queue

consumer 和 queue

  一个queue下可以连多个consumer;
  consumer从queue中取消息;
  queue中的一个消息,可以发送给与queue相连的其中一个consumer。

queue到consumer这个流程段,是不做匹配的(虽然有queuename和consumername,但是仅仅用做标识而已)。
queue类似于组,多个consumer并发处理queue中的消息。

exchange 和 producer

  producer的消息回带exchangenamerouterkey
  消息到了rabbitmq服务器,会选择一个exchange。
  exchange会根据routerkey来选择queue。

exchange 和 queue

  exchange和queue会通过queuekey来绑定操作;
  exchange收到消息之后,会根据消息中的routerkey来选择queue;
  具体匹配规则,根据exchange类型相关:

  • direct:完全匹配——必须routerkeyqueuekey完全相同,才会选择匹配到这个queue。
    • 如果queue1和queue2都以相同的queuekey 'test_12'绑定到exchange1,
    • 如果queue3以queuekey 'test_3'绑定到exchange1,
    • exchange1下面没有绑定其它任何队列。
    • 那么exchange收到routerkey为'test_12'的消息,那么会放到queue1,queue2;
    • 那么exchange收到routerkey为'test_3'的消息,那么会放到queue3;
    • 如果收到routerkey为其它字串,那么就匹配不到。
  • fanout:不做任何匹配,只要在exchange下面的queue就发。
    • 还是上面的例子,exchange1下面有三个队列queue1,queue2,queue3: bind(exchang1,queue1,test_12);bind(exchang1,queue2,test_12);bind(exchang1,queue3,test_3);
    • exchange1收到任何消息,都会同时发到queue1,queue2,queue3。
      • 注意,即不会对routerkeyqueuekey做匹配。
  • topic:这种跟redict类似,需要做匹配,但是,可以进行通配符匹配。
    • queue1假设queuekey为test.*
    • queue1假设queuekey为test.#
    • 假设routekey是test,匹配不到任何队列
    • 假设routekey是test.test1,同时匹配到queue1,queeu2
    • 假设routekey是test.test1.test2,只能匹配到queue2

注意,.之间的整个串进行匹配,不会支持部分匹配(比如:test*/test.t#)

消息流程

  • producer生成一个消息msg,发送到rabbitmq服务器;
  • rabbitmq服务器根据msg的exchange名字,选择一个exchange(如果为空,那么选择默认的exchange)
  • exchange根据routekey来匹配exchange下面的队列
    • 匹配成功,就放进队列;
    • 如果匹配失败,就做对应处理(属性设置,可以选择丢弃,可以选择等待队列创建)
  • queue从下面连接的consumer中选择一个,将msg发送过去。
    • 一般情况下,会等待ack确认。

相关文章

  • MyBatis-从查询昨天的数据说起

    前段时间写了《RabbitMQ入门》系列RabbitMQ入门-初识RabbitMQ RabbitMQ入门-从Hel...

  • 消息服务 - RabbitMQ 基础入门

    rabbitmq RabbitMQ官方入门教程 本文算是实现对入门教程的 java版本翻译吧。本文中演示代码地址 ...

  • RabbitMQ基础

    0. 前言 什么是消息中间件 安装RabbitMQ 编写RabbitMQ的入门程序 RabbitMQ的5种模式特征...

  • RabbitMQ入门-高效的Work模式

    扛不住的Hello World模式 上篇《RabbitMQ入门-从HelloWorld开始》介绍了RabbitMQ...

  • RabbitMQ 入门

    1:windows 下rabbitMQ 的安装 2:介绍 3:RabbitMQ 常见术语 3:java 入门实例 ...

  • RabbitMQ入门-从HelloWorld开始

    从读者的反馈谈RabbitMQ 昨天发完《RabbitMQ入门-初识RabbitMQ》,我陆陆续续收到一些反馈。鉴...

  • RabbitMq相关文章索引(1)

    基本常识 rabbitmq百度百科 RabbitMQ用户角色及权限控制 rabbitMQ入门详解,大神勿喷。。。自...

  • RabbitMQ学习

    MQ入门总结(五)RabbitMQ的原理和使用Spring Boot 中使用 RabbitMQ -- 很棒Cent...

  • RabbitMQ 学习-direct模式

    RabbitMQ direct模式 关于它的快速入门,可以在这里查看:http://www.rabbitmq.co...

  • RabbitMQ入门

    [toc] 一:入门 1.安装Erlang 2.安装RabbitMQ 3.配置 激活 RabbitMQ's Man...

网友评论

      本文标题:rabbitmq 入门

      本文链接:https://www.haomeiwen.com/subject/rmaevhtx.html