• 15-EasyNetQ之对延迟消息插件的支持


    RabbitMQ延迟消息插件仍然在实验阶段。你使用这个功能要自担风险。

    RabbitMQ延迟消息插件为RabbitMQ增加了新的交换机类型,允许延时消息投递。

    EasyNetQ为交换机通过定义一种新的日程类型:DelayedExchangeScheduler来支持这种能力。

    这样允许你使用之前同样的Future Publish接口,但是取消Future Message会抛出异常。因为延迟消息插件不支持消息取消,不管你在调用FuturePublish是否指定了cancellationKey,或当你调用CancelFuturePublish时,调度器将会抛出NotImplementedException异常。

    下面例子展示的是:你如何发布一个消息,这个消息会在未来3个月后收到这个消息。

    bus = RabbitHutch.CreateBus("host=localhost", 
            x=> x.Register<IScheduler,DelayedExchangeScheduler>());
    
    var followUpCallMessage = new FollowUpCallMessage( .. );
    
    bus.FuturePublish(DateTime.UtcNow.AddMonths(3), followUpCallMessage);        
    

    第一行代码告示EasyNetQ使用新的支持延迟消息交换机作为调度器。下面,消息被创建,然后在发布时,指定了投递时间是3个月后。注意:FuturePublish使用了UTC时间。

    插件安装

    可以在Community Plugins page找到延迟消息插件。下载与你安装的RabbitMQ对应 .ez文件,拷贝这个文件到RabbitMQ plugin文件夹下,然后通过运行下面的命令启动之。

    rabbitmq-plugins enable rabbitmq_delayed_message_exchange
    

    这个插件要求RabbitMQ最低版本为3.4或更新版本。

    它是怎么运行的

    当你调用bus.FuturePublish(..),EasyNetQ跟正常的交换机和binds一起,自动创建了一个新的 x-delayed-message交换机,这个消息被发送到这个延迟交换机上,并存储这个消息,直到到期时去投递这个消息。就在投递这个时刻,这个消息会被路由到普通交换机,然后从普通交换机到绑定的队列中。

    当你调用Publish(..)方法,消息会发布到正常交换机, 防止降低使用与x-delayed-message有关系的交换机的性能。

    延迟交换机持久化消息使用了Mnesia.这样避免在服务器停机时丢失消息。在服务器恢复之后,所有符合条件的消息将会按计划日程投递。

    取消Future消息

    如前所述,延迟消息插件不支持消息取消,因此这个功能是不支持的。任何调用FuturePublish时指定cancellationKey,或者调用CancelFuturePublish,都会抛出NotImplementedException异常。

    如果你需要这个功能,请上一篇所讲的使用Scheduler 服务,具体参考EasyNetQ之用Future Publish发布预定中事件

    英文地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Support-for-Delayed-Messages-Plugin
    本文地址:http://www.cnblogs.com/HuangLiang/p/EasyNetQ_Support_for_Delayed_Messages_Plugin.html
    我的微信订阅号:open_dotNET

  • 相关阅读:
    Interesting Finds: 2008.09.15~2008.09.21
    Interesting Finds: 2008.10.05~2008.10.07
    Interesting Find: 2008.10.02
    Interesting Finds: 2008.10.13~2008.10.15
    Interesting Finds: 2008.09.29
    Interesting Finds: 2008.10.08~2008.10.09
    Interesting Finds: 2008.09.22~2008.09.27
    Interesting Finds: 2008.10.12
    Interesting Finds: 2008.10.16~2008.10.18
    9月27号
  • 原文地址:https://www.cnblogs.com/HuangLiang/p/EasyNetQ_Support_for_Delayed_Messages_Plugin.html
Copyright © 2020-2023  润新知