消息队列与套接字

Sar*_*ara 22 sockets message-queue message-driven-bean websocket

我没有太多的套接字编程经验,但我尝试了一下它.我对MDB和消息队列非常熟悉.有人告诉我队列(例如MDB)是"不比直接套接字连接多".有人可以比较这两个对我.

fdr*_*ger 36

eeeeemph ......这个人非常错.这两者是无与伦比的,因为它们生活在不同的层次中.这就像是说"关系数据库不仅仅是磁盘上的文件"或"房子不仅仅是砖头".

消息队列是一个粘合发送者和接收者的软件,这样他们就可以在不了解彼此的情况下进行通信(当然,他们都需要知道队列)并且不需要实现网络代码,处理故障,路由一个即使发送者和接收者永远不会同时活着,系统也能正常工作,因为队列也可以作为未传递消息的临时存储.除此之外,队列可以提供额外的服务,如授权,交易等.

套接字连接只是一种低级抽象,它说:"目前有两个程序可以通过网络相互发送数据,至少在连接因某种原因而中断之前".所以是的,通常消息队列将使用套接字连接才能工作.

  • 答案肯定是正确的,但也非常通用.它还包括推出自己的http服务器,数据库,操作系统等内容.用这种成熟的产品代替家庭酿造可能只是在你有非常具体且同时非常有限的要求的情况下(例如当你的队列必须非常快速和紧凑,但不需要可靠时)或安全). (3认同)

Boa*_*ges 8

两者在某种意义上是完全不同的;

  1. 套接字允许在了解自己的客户端之间进行连接(例如客户端和后端服务之间或后端服务之间)。

  2. 消息队列主要充当消息驱动系统中不同后端服务之间的接口。除了消息代理(例如,rabbitMQ、activeMQ、Kafka)之外,服务不需要知道它们正在与谁通信。这可以确保即使其中一项服务发生故障,消息也不会丢失。服务启动后,消息代理立即将消息发送给消费者。