8、Publish发布
EasyNetQ支持的最简单的消息模式是发布/订阅。这个模式是一个用来解耦消息发布者和消费者的极好方式。消息发布者只要简单的对世界说,“这里有事发生” 或者 “我现在有一个信息”。它不关心有没有人监听,或者接收者是谁,或者接收者在哪里。我们能够添加和移除特定类型的消息订阅者,而不需发布者做任何的重新配置。我们也能够有多个发布者发布相同的消息,添加和删除发布者也不用其他的发布者或者订阅者做任何重新配置。
用EasyNetQ发布消息(假定你已经实例化了一个IBus实例)
- 创建你自己的消息实例,可以是任何可序列化的 .NET 类型。
- 调用IBus上的Publish方法,并传入你的消息实例。
代码如下:
var message = new MyMessage{ Text = "Hello Rabbit" }; bus.Publish(message);
如果为了确保消息投递成功,我们会使用Publisher Confirms方式,请看Publisher Confirms.
警告:
发布者和订阅者之间彼此是不知道对方的。发布者简单的对世界说“这儿有事情发生”,订阅者告诉世界“我关心这种事儿的发生”。在这个模型中
可能有一个订阅者关心这个消息,也可能有200个,或者没有人关心它。发布者不应该知道这个(交给RabbitMQ、.NET client 和 EasyNetQ就好了)。
EasyNetQ是这么实现发布/订阅模式的:假如你开始发布消息,而没有任何订阅者曾经订阅此消息,那么这个消息就简单地丢弃了。这就是我们的设计意图。