2019-07-10-消息队列

源产品: 

祖宗 :JMS

JMS角色: produce、cosume

消息模型:

- 点对点的队列(p2p) ——消费者主动获取队列的消息 ,一个消息只有一个消费者可以消费

- 订阅发布的主题(sub/pub)——主题会广播消息给所有已订阅的消费者,一个消息可以被多个消费者消费

基于JMS发展来的主流如Kafka、RabbitMQ、RokectMQ等

新产品:

JMS类似与JDBC,sun提供接口,由各个厂商(provider)来进行具体的实现。市面上众多成熟的JMS规范实现的框架Kafk,RabbitMQ,ActiveMQ,ZeroMQ,RocketMQ等。

- Kafka

概念图:

##  消费模式:至多、至少、刚好1次 

至少1次时考虑幂等性



- RabbitMQ

概念:

    - 路由器exchange(direct、fanout、topic、headers) 

    - 队列queue

    - 信道channel

    -生产者produce、消费者consumer

    - key: routingkey、bindingkey

    - 消息入queue保障方式:2种 ,事务机制 或 生产者(producer) confirm 模式

流程:    


producer ——routingKey1——>exchange(Type)——bindingKey1——>     queue1

                                                                                    bindingKey2——>     queue2

                                                                                     bindingKey3——>     queue3

不同类型的exchange:

exchange与queue绑定时会设置bindingKey,同样生产者给exchange发消息时也会设置routingKey。

如果Type 是direct模式,只有routingKey和bindingKey完全匹配上的queue才能得到exchange转发的消息。

如果Type 是fanout模式 ,此时生产者发消息时设置的routingKey就没有意义了,因为此时exchange会把其接收到的所有消息广播给与其绑定着的queue们,不管这些其与这些queue的bindingKey到底是啥。

如果Type 是Topic模式 ,一旦routingKey和bindingKey模糊匹配上的queue就能得到exchange转发的消息(类似与like方式进行分类发消息)。

- RokectMQ



参考:

https://blog.csdn.net/canot/article/details/53572400

https://blog.csdn.net/HEYUTAO007/article/details/50131089

补充:

rokect mq 可实现 事务消息:实现类似 X/Open XA 的分布事务功能,以达到事务最终一致性状态。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容