我没有太多的套接字编程经验,但我尝试了一下它。我对MDB和消息队列非常熟悉。有人告诉我队列(例如MDB)是“不比直接套接字连接多”。有人可以比较这两个对我来说。
答案 0 :(得分:30)
消息传递队列是一个粘合发送者和接收者的软件,这样他们可以在不了解彼此的情况下进行通信(当然,他们都需要知道队列)并且不需要实现网络代码,处理失败将一条消息路由到许多接收方等。即使发送方和接收方从不同时处于活动状态,系统也能正常工作,因为队列也可作为未发送消息的临时存储。除此之外,队列可以提供额外的服务,如授权,交易等。
套接字连接只是一种低级抽象,它说:“目前有两个程序可以通过网络相互发送数据,至少在连接因某种原因而中断之前”。所以是的,通常消息队列将使用套接字连接才能工作。
答案 1 :(得分:0)
两者在某种意义上完全不同;
Socket 允许在知道自己的客户端之间建立连接(例如,客户端和后端服务之间或后端服务之间)。
消息队列主要充当消息驱动系统中不同后端服务之间的接口。除了消息代理(例如,rabbitMQ、activeMQ、Kafka)之外,服务不需要知道它们正在与谁通信。这可确保即使其中一项服务关闭,消息也不会丢失。服务启动后,消息代理立即将消息发送给消费者。