Publish/subscribe是一种消息传递应用程序样式,它通过使用代理,将信息提供者(发布程序)与信息使用者(订户)分离。
在发布/预订系统中,发布程序不必了解其提供的信息(发布内容)的使用者,同时订户也不必了解其通过预订收到的信息的提供者。
将此样式与消息传递应用程序的点到点样式相比较,在后者中,发送消息的应用程序需要知道其发送消息的目的地。
消息代理确保消息到达正确的目的地,并且在每个目的地被转换为所需的格式。
下图显示了最简单的发布/预订应用程序。一个发布程序、一个代理和一个订户。发布内容从发布程序发送至代理,预订从订户发送至代理,然后发布内容再从代理发送至订户。
但是,通常发布/预订系统不止一个发布程序和订户,并且也不止一个代理。应用程序可以同时为发布程序和订户。
发布程序生成希望发布的消息并定义消息主题。在代理中运行的消息流从其输入节点检索消息,并将消息传递到 Publication 节点,从而向所有已注册对该主题感兴趣的订户分发此消息。
输入节点可能是下列某个内置节点:
订户通过指定以下某项注册对发布内容的请求:
请参阅快速漫游以获取发布/预订系统如何工作的图表。