消息队列与套接字



我没有太多的套接字编程经验,但我尝试阅读一些关于它的信息。我对 MDB 和消息传递队列非常熟悉。有人告诉我,队列(例如.MDB("只不过是直接的套接字连接"。有人可以为我比较这两者吗?

两者是无可比拟的,因为它们代表不同的。这就像将关系数据库与磁盘上的文件进行比较,或者将房屋与砖块进行比较(即,当然,您需要文件来构建数据库和砖块来构建房屋,有时您只需要一个文件或砖块,但这并不能使它们具有可比性(。

消息

队列是一种软件,它将发送方和接收方粘合在一起,以便他们可以在不了解彼此的情况下进行通信(当然,他们都需要了解队列(,并且不需要实现网络代码,处理故障,将一条消息路由到多个接收方等。即使发送方和接收方永远不会同时处于活动状态,系统也可以工作,因为队列还充当未传递消息的临时存储。除此之外,队列可以提供额外的服务,如授权、交易等。

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

顺便说一下:你提到的MDB(Message Driven Bean(是一个消息队列(就像JDBC不是databaseae一样(。它是用于使用事务消息的 API。它们可能来自队列,但并非必须如此。

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

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

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

相关内容

  • 没有找到相关文章

最新更新