许多业务流程要求在将来某个日期安排事件。例如,在与客户进行初次销售联系后,我们可能希望在将来的某个时间安排跟进电话。EasyNetQ可以通过其Future Publish功能帮助您实现此功能。例如,这里我们使用FuturePublish扩展方法来安排未来一个月的后续销售电话。请注意,FuturePublish使用UTC时间。

var followUpCallMessage = new FollowUpCallMessage( .. );
bus.FuturePublish(DateTime.UtcNow.AddMonths(3), 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

  3. 在Visual Studio中打开EasyNetQ.2012解决方案。在DatabaseScripts - > EasyNetQ.Scheduler文件夹中,您将找到许多SQL脚本。在EasyNetQ.Scheduler数据库中打开并运行它们。您将需要首先运行CreateWorkTables.sql,其他是存储过程脚本,并且可以按任何顺序运行。

  4. 构建解决方案。

  5. 找到\ Source \ EasyNetQ.Scheduler \ bin \ Debug并将内容复制到您选择的部署文件夹中。

  6. 在文本编辑器中打开EasyNetQ.Scheduler.exe.config并将'rabbit'和'scheduleDb'连接字符串分别更改为指向RabbitMQ代理和SQL Server实例。

  7. 打开控制台窗口并更改部署EasyNetQ.Scheduler的文件夹的路径。

  8. 运行以下命令将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.18051Running 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://www.cnblogs.com/wangwust/p/9437486.html

【EasyNetQ】- 使用Future Publish调度事件相关推荐

  1. php 事件调度,PHP单元测试调度事件

    如何在函数调用期间测试事件是否被调度? public function updateUser() { //Do some update stuff $event = new UserUpdated($ ...

  2. python sched_python事件调度库sched

    事件调度 sched模块内容很简单,只定义了一个类.它用来最为一个通用的事件调度模块. class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接 ...

  3. mysql 事件 day hour_Mysql事件调度器(Event Scheduler)

    Mysql中的事件调度器Event Scheduler类似于linux下的crontab计划任务的功能,它是由一个特殊的时间调度线程执行的 一.查看当前是否开启了event scheduler三种方法 ...

  4. mysql 事件调度器_【MySQL】事件调度器 (Event Scheduler)

    一 event 介绍 事件调度器是定时触发执行的,在这个角度上也可以称作是"临时的触发器".触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些 ...

  5. python事件调度库sched

    事件调度 sched模块内容很简单,只定义了一个类.它用来最为一个通用的事件调度模块. class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接 ...

  6. 11,EasyNetQ-调度事件与定时发布

    许多业务流程都要求将事件安排在未来的某个日期. 例如,在与客户进行初次销售联系之后,我们可能希望在将来某个时间安排后续电话. EasyNetQ可以通过其未来发布功能帮助您实现此功能. 例如,我们在这里 ...

  7. Spring5源码解析-Spring中的异步事件

    上一篇 Spring框架中的事件和监听器并未对Spring框架中的异步事件涉及太多,所以本篇是对其一个补充. 同步事件有一个主要缺点:它们在所调用线程的本地执行(也就是将所调用线程看成主线程的话,就是 ...

  8. Python3标准库:asyncio异步I/O、事件循环和并发工具

    1. asyncio异步I/O.事件循环和并发工具 asyncio模块提供了使用协程构建并发应用的工具.threading模块通过应用线程实现并发,multiprocessing使用系统进程实现并发, ...

  9. tornado源码分析(四)之future、gen.coroutine

    future是什么 在事件驱动编程模型中,会有很多的事件循环,各事件循环在创建异步事件时可以同时创建一个future对象,并将创建的异步事件与该future对象存储在一起,并将所有传入的callbac ...

最新文章

  1. 10个例子带你了解机器学习中的线性代数
  2. ICinsights:中国芯片难达成既定的2025目标
  3. OGEngine_粒子效果
  4. 深度学习之windows python faster rcnn 配置及demo运行
  5. C#入门详解(12)
  6. 安卓旅途之——开发数独(一)
  7. ORACLE EBS FORM 二次开发常用小技巧
  8. nsis升级包_NSIS制作软件升级安装包完整教程
  9. 有道无术,术尚可求,有术无道,止于术
  10. 公共命名空间和office文档
  11. 输入法公司Kika完成2.2亿B+轮融资 猎豹移动领投
  12. Chrome安装ElasticSearch-head插件
  13. VUE项目保存照片到本地(微信环境不可行)
  14. 关于做项目中关于文件读取遇到的一个问题(0x80070299)
  15. Nginx之web前言
  16. AWS学习日志之SAA
  17. 响应式织梦模板行业资讯网类网站
  18. unity3d录音播放
  19. php获取下周时间,从PHP获取下周的日期
  20. PhD新生规划知乎、一亩三分地观点摘抄

热门文章

  1. mean技术栈 linux,“MEAN”技术栈开发web应用
  2. java输出减法表,Calendarjava时间加减法和格式化输出
  3. java memcache 队列_基于memcache的java分布式队列实现。
  4. mysql 的数据库实例理解_理解数据库和实例
  5. php 如何宏定义,php – 在html中实现宏定义的方法
  6. stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)
  7. 阿尔法贝塔阀原理_图总结 - 阿尔法个贝塔 - 博客园
  8. error: storage size of ‘threads’ isn’t known
  9. suse linux 查看cpu,Suse Linux zmd 耗用100% CPU
  10. 变量和简单数据类型(一)