既然已经看到了发布/订阅的行动,让咱们来看看在窗帘后面,看看发生了什么。node
若是你尚未见过的发布/订阅样本然而花一分钟穿过或开始使用NServiceBus建立一个新项目.数据库
最主要的理解是这样的:用户让出版商知道他们感兴趣,和出版商商店的地址,这样就知道发送的消息。很简单,一旦你知道了它是如何运做的。编程
对发布/订阅消息传递的一个常见的假设是,它涉及到物理一对多沟通。惟一的问题是,在物理层面pub / sub并不有趣。在发布时它变成有价值的逻辑事件从一个逻辑区域责任其余逻辑感兴趣。app
NServiceBus的基础设施部分处理物流和一对多消息调度pub / sub许多寻找,但这些是至关透明的编程模型。让咱们看看逻辑pub / sub和物理分布的叠加,一步一个脚印。负载均衡
上面的图向咱们展现了一个逻辑出版商P1,和两个逻辑订阅者SA和某人有不少物理节点(颜色的蓝色)和一些NServiceBus基础设施(橘色)。如今,咱们将假设SA和某人已经订阅,每一个指定经销商的离港公共端点。线程
当一个节点在逻辑出版商P1去发布一个消息,发生了什么:队列
当请求应用逻辑来发布消息,订阅数据库配置的NServiceBus基础设施联系,找到全部订阅者端点注册为给定的消息类型,和每个分派一个物理信息。进程
单向消息用于调度物理消息以来,即便订阅者端点之一是离线或不可用,这并不使出版线程块。发送机器即将离任的消息存储在队列(可配置的时间),而消息传递基础结构的尝试将消息传递到目的地。事件
全部的经销商在这一点上是该消息转发它接收到另外一个节点。get
你能够把经销商的像一个负载均衡器它分发消息来许多其余机器。这种物理一对多通讯须要扩展运行的机器数量对于一个给定的用户,但实际上并不须要任何pub / sub。每一个用户都有本身的独立分销商和他们中的每个决定,机它传递消息。
看到关于经销商的更多信息.
无论哪一个节点在出版商出版消息,会发生一样的过程。
这意味着你能够向外扩展发布节点的数量,经过使用数据库来存储订阅,而无需一个分销商。当使用通用NServiceBus主机进程你获得这个默认的生产情况。