即时通信之 - RabbitMQ(基于socket)基础概念详细介绍

即时通信之 - RabbitMQ(基于socket)基础概念详细介绍,第1张

转自: >JMS:Java Message Service,java消息服务,是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。

p2p:点对点发送,一个消息只能被消费一次
涉及:
消息队列(Queue)
发送者(Sender)
接收者(Receiver)
每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着信息,直到它们被消费或超时。
示意图:p2p示意图
特点:

Pub/Sub:发布订阅,一个消息可以被消费多次
涉及角色:
主题(Topic)
发布者(Publisher)
订阅者(Subscriber)
客户端将消息发送到主题。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
示意图:Pub/Sub示意图
特点:

MQ:消息中间件(MOM:Message Orient middleware),消息队列
作为系统间通信的必备技术,低耦合、可靠传输、流量控制、最终一致性
实现异步消息通信

Apache下
完全支持Java的JMS协议
消息模式:1、点对点 2、发布订阅

Erlang语言实现的开源的MQ中间件,支持多种协议
主要的通信协议是AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用协议的一个开放标准,为面向消息的中间件设计。

Apache下开源项目
高性能分布式消息队列,一般海量数据传输,大数据部门用
单机吞吐量:10w/s

阿里 贡献给了Apache
参考了Kafka实现基于Java 消息中间件

消息传输最快

RabbitMQ是一个开源的AMQP实现,服务端用Erlang语言编写,支持多种客户端,如:Python、Ruby、NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

涉及角色:

可以基于Docker安装RabbitMQ,记住其端口:
15672:网页版可视化服务器数据
5672:客户端连接的端口号

点对点消息
一个消息只能消费一次
只需要队列就可以,不需要交换机
消息发送者和消息接收者者可以不同时在线

RabbitMQ特色就在于Exchange,主要有以下类型:
fanout:只要有消息就转发给绑定的队列,不会进行消息的路由判断
direct:会根据路由匹配规则,将消息发送到指定队列中,注意路由规则不支持特殊字符
topic:会根据路由匹配规则,将消息发送到指定队列中,注意路由规则支持特殊字符,比如: #


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13499179.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-19
下一篇 2023-08-19

发表评论

登录后才能评论

评论列表(0条)

保存