zoukankan      html  css  js  c++  java
  • 14-EasyNetQ之用Future Publish发布预定中事件

    很多商业流程需要事件在未来的时间按照预定时间发布。例如,在初次与客户接触后,可以在未来某个时间去电话回访客户。EasyNetQ可以用它的Future Publish功能帮你实现这个功能。举例:这里我们使用FuturePublish扩展方法去预定未来一个月后打销售回访电话。注意:FuturePublish使用UTC时间。

    var followUpCallMessage = new FollowUpCallMessage(..);
    
    bus.FuturePublish(DateTime.UtcNow.AddMonths(1),followUpCallMessage);
    

    从现在开始一个月后,这个消息通过EasyNetQ将会发布这个消息,任何FollowUpCallMessage的订阅者将接收到一个原始消息拷贝。

    FuturePublish需要EasyNetQ.Scheduler服务处于运行中状态。

    它是如何运作的?

    当你调用bus.FuturePublish(publishDate,Message)时,EasyNetQ包装这个消息到一个系统消息'ScheduleMe'中,然后发布这个消息到RabbitMQ。这个调度服务订阅这个消息。当它接收到一个ScheduleMe消息时,它会存储这个消息到它的本地数据库中,这个调度服务去数据库查询日程日期到期的消息,当有任何消息到期时,它会从这个ScheduleMe消息中解开原始的消息,然后发送消息到事件总线。

    安装调度服务

    1. 在SQL Server中,创建一个名称为EasyNetQ.Scheduler的数据库。

    2. 获取EasyNetQ源码

    git clone git@github.com:mikehadlow/EasyNetQ.git
    
    1. 在Visual Studio中打开EasyNetQ.2012这个解决方案。在DatabaseScripts->EasyNetQ.Scheduler文件夹下你会发现一些SQL脚本。在EasyNetQ.Scheduler数据库中打开并执行这些脚本。你需要先执行CreateWorkTables.sql,其他是存储过程脚本,执行这些脚本没有先后顺序。

    2. 编译这个解决方案。

    3. 找到SourceEasyNetQ.SchedulerinDebug 这个文件夹,拷贝其下所有文件到你选择的部署文件夹中。

    4. 用一个文本编辑器打开EasyNetQ.Scheduler.exe.Config ,修改'rabbit'和'scheduleDb'连接字符串为你的RabbitMQ代理和SQL Server各自的实例。

    5. 打开控制台窗口,进入你部署EasyNetQ.Scheduler所在的文件夹。

    6. 运行后面的命令,把EasyNetQ.Scheduler安装为一个windows 服务。

    EasyNetQ.Scheduler.exe install
    

    执行后,显示下面信息:

    Configuration Result: [Success] Name EasyNetQ.Scheduler [Success] ServiceName EasyNetQ.Scheduler Topshelf v3.1.106.0, .NET Framework v4.0.30319.18051

    Running a transacted installation.

    Beginning the Install phase of the installation. Installing EasyNetQ.Scheduler service Installing service EasyNetQ.Scheduler... Service EasyNetQ.Scheduler has been successfully installed. Creating EventLog source EasyNetQ.Scheduler in log Application...

    The Install phase completed successfully, and the Commit phase is beginning.

    The Commit phase completed successfully.

    The transacted install has completed.

    现在你应该能够调用FuturePublish方法,在指定时间到来时,你会收到消息。

    卸载EasyNetQ.Scheduler,运行:

    EasyNetQ.Scheduler.exe uninstall
    

    英文地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Scheduling-Events-with-Future-Publish
    本文地址:http://www.cnblogs.com/HuangLiang/p/EasyNetQ_Scheduling_Events_with_Future_Publish.html
    我的微信订阅号:open_dotNET

  • 相关阅读:
    在上传文件时限制上传文件的大小,并捕捉超过文件大小限制的
    javascript 获取标签具体位置
    终端服务器超出了最大允许连接数
    常用SQL语句书写技巧
    Javascript实现截图功能(代码)
    JavaScript实现类,有多种方法。
    DBCC CHECKDB 数据库或表修复
    Lucene的例子
    控制同一exe程序打开多次
    IIS6 MMC检测到此管理单元发生一个错误,建议您关闭并重新启动mmc
  • 原文地址:https://www.cnblogs.com/HuangLiang/p/EasyNetQ_Scheduling_Events_with_Future_Publish.html
Copyright © 2011-2022 走看看