赞
踩

学习一门技术,首先要知道它能帮我们解决哪些问题,带着这个疑问去探索可以事半功倍。
痛点1:
业务复杂,需要同步调用多个系统的接口,总耗时较长,用户体验差。

痛点2:
比如系统A需要和多个系统交互,如果其它系统改变或者新增系统,那么A系统就需要改代码,这样系统之间耦合度较高。

总结:
消息中间件最大的作用就是:异步处理、系统解耦; 此外还可以作为消息广播、流量控制。
我们根据架构原理图上涉及到的来看:

交换机是RabbitMQ的核心组件,交换机接收消息并将其路由到零个或多个队列中。所使用的路由算法取决于绑定的交换类型和规则。Exchange有以下4种:
| Name(交换机类型) | Default pre-declared names(预声明的默认名称) |
| Direct exchange(直连交换机) | (Empty string) and amq.direct |
| Fanout exchange(扇型交换机) | amq.fanout |
| Topic exchange(主题交换机) | amq.topic |
| Headers exchange(头交换机) | amq.match (and amq.headers in RabbitMQ) |
直连交换机根据消息路由键将消息传递到队列,队列使用路由键K绑定到交换机。当具有路由键R的新消息到达直连交换机时,如果K = R,则交换机将其路由到队列。
如果多个队列绑定到具有相同路由键K的直连交换机,则交换机将消息路由到K = R的所有队列。

扇出交换机将消息路由给绑定到它身上的所有队列,而忽略路由键。如果有N个队列绑定到一个扇出交换机,当新消息发布到该交换机时,该消息的副本将被传递到这N个队列。

主题交换机通过对消息的路由键和队列到交换机的绑定模式之间的匹配,将消息路由给一个或多个队列。主题交换机经常用来实现各种分发/订阅模式及其变种。

主题交换器非常强大,可以像其他类型的交换器一样工作:
头交换机是根据消息header值而不是routing key将消息路由到队列的交换器。
生产者在消息头中以键值对的形式添加一些值,并将其发送到headers exchange,收到消息后,headers exchange尝试将所有或任何(基于x-match的值)header值与绑定到它的所有队列的值匹配。 如果找到匹配,则将消息路由到绑定值匹配的队列,如果未找到匹配,则忽略该消息。
当"x-match"参数被设置为"any"时,只要一个匹配的头值就足够了。或者,将“x-match”设置为“all”要求所有值必须匹配。
这里就不说安装搭建了,百度一下吧。直接来看一看RabbitMQ的控制台:

也是在管理页面创建我们的虚拟机和用户。

这里我们新建一个虚拟机和用户,后续使用。

新建一个用户,账号密码自定义。

用户添加后可以看到他没有可以访问的虚拟机,点击用户名进入设置

把虚拟机demo分配给此用户


下一篇整合SpringBoot来实际使用RabbitMQ。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。