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

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

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

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

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

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

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

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

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

  (1)exchange持久化,在声明时指定durable => 1  

  (2)queue持久化,在声明时指定durable => 1

  (3)消息持久化,在投递时指定delivery_mode => 2(1是非持久化)

prefetchCount=1,则Queue每次给每个消费者发送一条消息

Exchange Type:

fanout:所有与它绑定的Queue中

direct:binding key与routing key完全匹配的Queue中

topic:

  • routing key为一个句点号“. ”分隔的字符串(我们将被句点号“. ”分隔开的每一段独立的字符串称为一个单词),如“stock.usd.nyse”、“nyse.vmw”、“quick.orange.rabbit”
  • binding key与routing key一样也是句点号“. ”分隔的字符串
  • binding key中可以存在两种特殊字符“*”与“#”,用于做模糊匹配,其中“*”用于匹配一个单词,“#”用于匹配多个单词(可以是零个)例如”abc.#”匹配”abc.def.ghi”,”abc.*”只匹配”abc.def”

headers:根据发送的消息内容中的headers属性进行匹配

RabbitMQ中实现RPC的机制是:

  • 客户端发送请求(消息)时,在消息的属性(MessageProperties,在AMQP协议中定义了14中properties,这些属性会随着消息一起发送)中设置两个值replyTo(一个Queue名称,用于告诉服务器处理完成后将通知我的消息发送到这个Queue中)和correlationId(此次请求的标识号,服务器处理完成后需要将此属性返还,客户端将根据这个id了解哪条请求被成功执行了或执行失败)
  • 服务器端收到消息并处理
  • 服务器端处理完消息后,将生成一条应答消息到replyTo指定的Queue,同时带上correlationId属性
  • 客户端之前已订阅replyTo指定的Queue,从中收到服务器的应答消息后,根据其中的correlationId属性分析哪条请求被执行了,根据执行结果进行后续业务处理

附件(代码)

https://pan.baidu.com/s/1i6sPxbf

最新文章

  1. jquery的bind跟on绑定事件的区别
  2. 【学习笔记】load-on-startup Servlet
  3. highchart 动态刷新(可用于制作股票时时走势)
  4. UWP的拖拽功能
  5. WCF消息拦截,利用消息拦截做身份验证服务
  6. atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException
  7. 【Bootstrap基础学习】00 序
  8. Nginx架构的企业级应用
  9. HDU 4848
  10. 提示29. 怎样避免延迟加载或Load()阅读器问题
  11. 正式学习React( 三)
  12. H264源码分析(四)
  13. C# 开机自动启动程序
  14. 一个3D视频播放器的演示APK
  15. Oracle case 关键字的使用
  16. android学习ProgressBar的简单使用
  17. 00-翻译IdentityServer4的目的
  18. 解决docker主机配置了DaoCloud.io的加速后重启失败问题Failed to start Docker Application Container Engine
  19. C. Ayoub and Lost Array
  20. Verilog HDL按位操作符与归约操作符的区别

热门文章

  1. 2018-2-13-win10-UWP-RSS阅读器
  2. rpm2cpio - 从 RPM 软件包中提取 cpio 归档
  3. [BZOJ5073] [Lydsy1710月赛]小A的咒语 后缀数组+dp+贪心
  4. 人生苦短_我用Python_logging日志操作_011
  5. springBoot 连接数据库
  6. Shell输入命令时一些有用的快捷键
  7. 透明的UITableView
  8. mysql 8.0版本下载安装以及默认密码修改
  9. 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】
  10. 10.18.1 linux文本编辑器vim