【EasyNetQ】- 发布】的更多相关文章

最近开始在项目中使用easynetq,大概了解了下api,在网上看了下示例,结果没有一个运行成功的,一个最简单的发布订阅都没有成功.我是直接运行起来别人的示例,不应该啊,后来一直分析一直分析,最后发现:消息没有序列化!这还是其一,第二点,应该要先起来消息接收端,再起来消息发布端.一开始就是简单的: static void Main() { using( var bus = RabbitHutch.CreateBus( "host=localhost" ) ) { bus.Subscri…
EasyNetQ支持的最简单的消息传递模式是发布/ 订阅.这种模式是消除消费者信息提供者的绝佳方式.出版商简单地向全世界说,“这已经发生了”或“我现在有了这些信息”.它不关心是否有人正在倾听,他们可能是谁或他们所在的位置.我们可以添加和删除特定消息类型的订阅者,而无需重新配置发布者.我们还可以让许多发布商发布相同的消息,再次添加和删除发布者,而无需重新配置任何其他发布者或订阅者. 要使用EasyNetQ发布(假设您已经创建了IBus实例): 创建消息的实例,它可以是任何可序列化的.NET类型.…
EasyNetQ支持的最简单的消息传递模式是发布/ 订阅.这种模式是消除消费者信息提供者的绝佳方式.出版商简单地向全世界说,“这已经发生了”或“我现在有了这些信息”.它不关心是否有人正在倾听,他们可能是谁或他们所在的位置.我们可以添加和删除特定消息类型的订阅者,而无需重新配置发布者.我们还可以让许多发布商发布相同的消息,再次添加和删除发布者,而无需重新配置任何其他发布者或订阅者. 要使用EasyNetQ发布(假设您已经创建了IBus实例): 创建消息的实例,它可以是任何可序列化的.NET类型.…
RabbitMQ有一个很酷的功能,基于主题的路由,这个功能允许订阅者基于多个条件去过滤消息.一个主题是由点号分隔的单词列表,随消息一同发布.例如:“stock.usd.nyse” 或 “book.uk.london” 或 “a.b.c”,这些可以是任何你喜欢的单词,但通常是一些消息的属性.主题字符串限制最多255个字符. 去发布一个主题,简单的通过使用带主题参数的Publish重载方法” bus.Publish(message,"X.A"); 1 订阅者能通过指定一个主题去匹配来过滤消…
EasyNetQ默认行为,当生成队列的名称时,使用消息类型名+subscription Id.例如:PartyInvitation 这个消息类型,命名空间为 EasyNetQ.Tests.Integration,生成的队列名称为: EasyNetQ.Tests.Integration.PartyInvitation:EasyNetQ.Tests_schedulingTest1,这里假设subscription Id为 schedulingTest1. 控制队列名称 控制队列名称,用Queue a…
你能够订阅一个接口,然后发布基于这个接口的实现. 让我们看下一个示例.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name { get; set; } } public class Cat : IAnimal { public string Name { get; set; } public string Meow { get; set; } } public class Dog : IAnimal { public…
默认的AMQP发布不是事务性的,并不保证您的消息实际到达代理.AMQP确实指定了事务发布,但是使用RabbitMQ它非常慢,我们还没有通过EasyNetQ API支持它.对于高性能保证交付,建议您使用“发布者确认”.简单来说,这是AMQP的扩展,它在代理成功接收到您的消息时提供回调. “成功收到”是什么意思?这取决于 ... 瞬时消息在入队时确认. 只要持久性消息持久保存到磁盘,或者在每个队列上消耗持久消息,就会确认该消息. 直接确认不可路由的瞬态消息并将其发布. 有关发布者确认的更多信息,请阅…
您可以订阅接口,然后发布该接口的实现. 我们来看一个例子.我有一个接口IAnimal和两个实现Cat和Dog: public interface IAnimal { string Name { get; set; } } public class Cat : IAnimal { public string Name { get; set; } public string Meow { get; set; } } public class Dog : IAnimal { public string…
自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息. bus.Subscribe<MyMessage>("subscriptionId", x => Console.WriteLine(x.Text)); bus.Publish<MyMessage>(theMessage); 但是,在运行期间,你怎么去发现消息类型?例如:你可能有一些系统加载外部插件,希望能订阅他们自己的消息类型.EasyNetQ为了这个目标提供了非泛型的发布和订阅方法.…
AMQP发布消息默认情况下是非事务性的,不能确保你的消息真正送达代理.AMQP可以去指定事务性发布,但是RabbitMQ这样会非常慢,我们没有让EasyNetQ API去支持此功能.为了高效的确保投递成功,RabbitMQ推荐使用'Publish Confirms'.简单来讲,这是AMQP的一个扩展,当你的消息被代理成功接收以后,提供了一个回调支持. 成功接收意味着什么呢? 一个瞬态消息被确认那一刻,消息已进入队列. 一个持久化消息被确认时,消息会持久化到磁盘,或者每一个队列上的消息已被消费掉.…