随笔分类 -  EasyNetQ

一个基于RabbitMQ.Client的消息队列类库
摘要:EasyNetQ.Hosepipe是EasyNetQ队列管理工具。用来取回队列中的消息并重新发布这些消息。还可以用它来检测错误队列,并重试发布消息。 用法 命令 选项 示例 1. 输出队列'my_queue'中的所有消息为text文件到路径'c:temp\message'中: 2. insert(重 阅读全文
posted @ 2017-07-17 14:17 Leo 阅读(900) 评论(0) 推荐(0)
摘要:这一篇文章让我们看看在消息系统中可能发生的各种错误的情况下,看下EasyNetQ如何处理它们。 订阅服务挂了 当你写了一个windows 服务,用来订阅一个NewCustomerMessage消息。 如果这个服务失败时会发生什么呢?为了效率,EasyNetQ为订阅功能实现了一个基于内存的内部使用的队 阅读全文
posted @ 2017-07-15 15:48 Leo 阅读(2207) 评论(0) 推荐(0)
摘要:自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息。 但是,在运行期间,你怎么去发现消息类型?例如:你可能有一些系统加载外部插件,希望能订阅他们自己的消息类型。EasyNetQ为了这个目标提供了非泛型的发布和订阅方法。 只要加上这个using语句: 它将提供给你一些subscrip 阅读全文
posted @ 2017-07-14 18:40 Leo 阅读(771) 评论(0) 推荐(0)
摘要:EasyNetQ v0.7.1.30版本有了一个简单AutoSubscriber。你能够使用它很容易的去扫描指定程序集中实现了IConsume 或 IConsumeAsync接口的类,然后这个自动订阅者让这些消费者订阅到你的事件总线中。IConsume的实现将使用事件总线的Subscribe方法,同 阅读全文
posted @ 2017-07-14 17:52 Leo 阅读(2158) 评论(0) 推荐(1)
摘要:RabbitMQ延迟消息插件仍然在实验阶段。你使用这个功能要自担风险。 "RabbitMQ延迟消息插件" 为RabbitMQ增加了新的交换机类型,允许延时消息投递。 EasyNetQ为交换机通过定义一种新的日程类型:DelayedExchangeScheduler来支持这种能力。 这样允许你使用之前 阅读全文
posted @ 2017-07-12 14:15 Leo 阅读(1174) 评论(1) 推荐(0)
摘要:很多商业流程需要事件在未来的时间按照预定时间发布。例如,在初次与客户接触后,可以在未来某个时间去电话回访客户。EasyNetQ可以用它的Future Publish功能帮你实现这个功能。举例:这里我们使用FuturePublish扩展方法去预定未来一个月后打销售回访电话。注意:FuturePubli 阅读全文
posted @ 2017-07-11 23:22 Leo 阅读(952) 评论(3) 推荐(0)
摘要:AMQP发布消息默认情况下是非事务性的,不能确保你的消息真正送达代理。AMQP可以去指定事务性发布,但是RabbitMQ这样会非常慢,我们没有让EasyNetQ API去支持此功能。为了高效的确保投递成功,RabbitMQ推荐使用'Publish Confirms'。简单来讲,这是AMQP的一个扩展 阅读全文
posted @ 2017-07-11 21:37 Leo 阅读(1670) 评论(0) 推荐(0)
摘要:为了能够支持消息版本控制,你需要确保这个必要的组件已配置。最简单的实现是这样的: 一旦消息版本功能启动,你必须显示的选择你要版本化的消息加入版本控制。 它是怎么工作的? 当你发布一个消息,EasyNetQ通常为这个消息类型创建一个交换机,然后发布这个消息到这个交换机。订阅者创建队列,绑定到这个交换机 阅读全文
posted @ 2017-07-10 23:38 Leo 阅读(850) 评论(0) 推荐(0)
摘要:你能够订阅一个接口,然后发布基于这个接口的实现。 让我们看下一个示例。我有一个接口IAnimal和两个实现Cat和Dog: 我能够订阅IAnimal接口,并接收Cat和Dog这个两个类: 让我们发布Cat和Dog: 注意:必须显示的指定发布了IAnimal接口。EasyNetQ在发布和订阅方法中指定 阅读全文
posted @ 2017-07-09 23:34 Leo 阅读(1011) 评论(0) 推荐(2)
摘要:EasyNetQ默认行为,当生成队列的名称时,使用消息类型名+subscription Id。例如:PartyInvitation 这个消息类型,命名空间为 EasyNetQ.Tests.Integration,生成的队列名称为: EasyNetQ.Tests.Integration.PartyIn 阅读全文
posted @ 2017-07-08 23:10 Leo 阅读(1857) 评论(0) 推荐(0)
摘要:RabbitMQ有一个很酷的功能, "基于主题的路由" ,这个功能允许订阅者基于多个条件去过滤消息。一个主题是由点号分隔的单词列表,随消息一同发布。例如:“stock.usd.nyse” 或 "book.uk.london" 或 "a.b.c",这些可以是任何你喜欢的单词,但通常是一些消息的属性。主 阅读全文
posted @ 2017-07-07 01:08 Leo 阅读(1097) 评论(0) 推荐(1)
摘要:鉴于Publish/Subsrcibe和Request/Response模式是位置透明的,在这个方面,你不需要去指定消息的消费者具体所处的位置,Send/Receive模式是特别针对通过命名队列来设计的。它也使得不用假定关于什么样的消息类型能发送到这个队列。这意味着,你能够发送不同类型的消息到相同的 阅读全文
posted @ 2017-07-07 00:08 Leo 阅读(1906) 评论(2) 推荐(1)
摘要:EasyNetQ也支持Request/Response这种方式的消息模式。这种方式很容易在client/Server应用中执行,客户端发送一个请求到服务器,服务器然后处理请求后返回一个响应。和传统的RPC机制不同,EasyNetQ request/response操作不需要有一个名字,仅仅需要简单的 阅读全文
posted @ 2017-07-06 00:04 Leo 阅读(1825) 评论(2) 推荐(1)
摘要:一个EasyNetQ订阅者订阅一种消息类型(消息类为.NET 类型)。通过调用Subcribe方法一旦对一个类型设置了订阅,一个持久化队列就会在RabbitMQ broker上被创建,这个类型的任何消息都会被发送到这个队列上。订阅者无论什么时候连接上,RabbitMQ都将会将消息从队列中发送给订阅者 阅读全文
posted @ 2017-07-06 00:01 Leo 阅读(3585) 评论(1) 推荐(0)
摘要:EasyNetQ支持的最简单的消息模式是发布/订阅.这个模式是一个极好的方法用来解耦消息提供者和消费者。消息发布者只要简单的对世界说,“这里有些事发生” 或者 “我现在有一个信息”。它不关心有没有人监听,或者接收者是谁,或者接收者在那里。我们能够添加和移除特定类型的消息的订阅者,不需发布者做任何的重 阅读全文
posted @ 2017-07-05 01:05 Leo 阅读(1655) 评论(0) 推荐(0)
摘要:EasyNetQ提供了一个Logger接口 IEasyNetQLogger: Logging 默认是关闭的,NullLogger作为IEasyNetQLogger的具体实现被注册进去。 有一个控制台Logger(ConsoleLogger)可以用来做测试或调试。但是,它或许不能在生产环境系统中使用。 阅读全文
posted @ 2017-07-02 16:02 Leo 阅读(1167) 评论(0) 推荐(0)
摘要:EasyNetQ可以通过SSL进行连接。这篇指南的作者Gordon Coulter最初为回应一个提问写的。 首先,你必须仔细依据https://www.rabbitmq.com/ssl.html文章中的步骤。我花费了很多时间尝试让openssl这部分能运作起来,然后为了让他按我的需要去运作而不仅仅只 阅读全文
posted @ 2017-07-02 12:23 Leo 阅读(1046) 评论(0) 推荐(0)
摘要:如果你连接过关系数据库,例如SQL Server。你会发现EasyNetQ处理connections有点奇怪。和关系数据库通讯一直都是通过client开始的。Client 打开一个连接, 发出一个SQL命令,如有必要时,处理结果,然后关闭连接。一般建议是你维持一个打开的连接,时间要尽可能短,通过AP 阅读全文
posted @ 2017-07-02 12:23 Leo 阅读(2093) 评论(0) 推荐(0)
摘要:EasyNetQ 是一个容易使用,坚固的,针对RabbitMQ的 .NET API。 假如你尽可能快的想去安装和运行RabbitMQ,请去看 "入门指南" 。 EasyNetQ是为了提供一个尽可能简洁的适用与RabbitMQ的.NET类库。为了实现这些目标,EasyNetQ提供一种自认为你会在.NE 阅读全文
posted @ 2017-07-02 12:21 Leo 阅读(3191) 评论(1) 推荐(3)