【EasyNetQ】- 使用Future Publish调度事件

许多业务流程要求在将来某个日期安排事件。例如,在与客户进行初次销售联系后,我们可能希望在将来的某个时间安排跟进电话。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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java这些多线程基础知识你会吗?

0、并发和并行、进程核线程、多进程和多线程的区别: (这里的时间和时刻上的概念同物理上的一样) 并发:在一段时间内多个任务同时执行,或者说是在一段很短的时间内可以执行多条程序指令,微观上看起来好像是可…

MySQL set names 命令_mysql set names 命令和 mysql 字符编码问题

先看下面的执行结果:(rootlocalhost)[(none)]mysql>show variables like character%;---------------------------------------------------------------------------------------| Variable_name | Value |---------------------------------------------------…

设置Proxy Server和SQL Server实现数据库安全

首先,我们需要了解一下SQL Server在WinSock上定义协议的步骤: 1. 在”启动”菜单上,指向”程序/Microsoft Proxy Server”,然后点击”Microsoft Management Console”。 2. 展开”Internet Information Service”,再展开运行Proxy…

Python django解决跨域请求的问题

解决方案 1.安装django-cors-headers pip3 install django-cors-headers 2.配置settings.py文件 INSTALLED_APPS [...corsheaders,...] MIDDLEWARE_CLASSES (...corsheaders.middleware.CorsMiddleware,django.middleware.common.CommonMiddleware, # 注意顺序...…

加勒比海兔_加勒比海海洋物种趋势

加勒比海兔Ok, here’s a million dollar question: is the Caribbean really dying? Or, more specifically, are marine species found on Caribbean reefs becoming less abundant?好吧,这是一个百万美元的问题:加勒比海真的死了吗? 或者…

mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数

MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数、分钟数、小时数、天数、周数、季度数、月数、年数,当前日期增加或者减少一天、一周等等。SELECT TIMESTAMPDIFF(类型,开始时间,结束时间)相差的秒数:SELECT TIMESTAMPDIFF(SECOND,1993-03-23 0…

tornado 简易教程

引言 回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有一个对应的线程来用web应用(如Djang…

如果你的电脑是通过代理上网的.就要用端口映射

由于公网IP地址有限,不少ISP都采用多个内网用户通过代理和网关路由共用一个公网IP上INTERNET的方法, 这样就限制了这些用户在自己计算机上架设个人网站,要实现在这些用户端架设网站,最关键的一点是, 怎样把多用户的内网…

人口密度可视化_使用GeoPandas可视化菲律宾的人口密度

人口密度可视化GeoVisualization /菲律宾。 (GeoVisualization /Philippines.) Population density is a crucial concept in urban planning. Theories on how it affects economic growth are divided. Some claim, as Rappaport does, that an economy is a form of “spati…

Unity - Humanoid设置Bip骨骼导入报错

报错如下: 解决: 原因是biped骨骼必须按照Unity humanoid的要求设置,在max中设置如下: 转载于:https://www.cnblogs.com/CloudLiu/p/10746052.html

python3openpyxl无法打开文件_Python3 处理excel文件(openpyxl库)

openpyxl 介绍openpyxl是一个用于读/写 XLSX/XLSM/XLTX/XLTM文件的python库。openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls后缀的文件,需要使用 xlrd和xlwt库进行操作。虽然xlrd和xlwt也可以进行文件读写&…

Kubernetes - - k8s - v1.12.3 OpenLDAP统一认证

1,基本概念 为了方便管理和集成jenkins,k8s、harbor、jenkins均使用openLDAP统一认证。2,部署openLDAP 根据之前的文档,openLDAP使用GFS进行数据持久化。下载对应的openLDAP文件git clone https://github.com/xiaoqshuo/k8s-clust…

给程序加壳

在内存中运行可执行程序,好处是可以给程序加壳,加密源程序,静态反汇编无法获得PE输入节,但是因为运行后仍然是独立的进程,所以没办法防止远程线程注入,挂接API钩子。 typedef IMAGE_SECTION_HEADER ( * PIM…

srpg 胜利条件设定_英雄联盟获胜条件

srpg 胜利条件设定介绍 (Introduction) The e-sports community has been growing rapidly in the past few years, and what used to be a casual pastime has morphed into an industry projected to generate $1.8 B in revenue by 2022. While there are many video games …

[Egret][文档]遮罩

——遮罩的作用是指定一个显示对象的可见区域,即这个显示对象只在这个区域可见。 一、矩形遮罩 将一个矩形对象赋值给显示对象的 mask 属性。 shp.mask new egret.Rectangle(20,20,30,50); 【注】:这个矩形的坐标(20,20)和(30,50)是相对于被遮罩对象shp…

clob类型字段最大存储长度_请教oracle的CLOB字段的最大长度?

CLOB和BLOB都是4G,而LONG ,LONG raw是旧时代的oracle二进制和长文本表示,将来会被废弃。最长长度是2G.单位是Byte表中单个 LOB 字段 在 9i 版本中可保存 4GB 数据, 在 10g 版本中可保存多达 128TB 的数据.所以理论上是没限制的ORACLE的数据类型-- ORAC…

JdbcUtil

转自:https://github.com/ghyg525/util_java_jdbc JdbcUtil.java import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; …

机器学习 综合评价_PyCaret:机器学习综合

机器学习 综合评价Any Machine Learning project journey starts with loading the dataset and ends (continues ?!) with the finalization of the optimum model or ensemble of models for predictions on unseen data and production deployment.任何机器学习项目的旅程都…

silverlight 3D 游戏开发

http://www.postvision.net/SilverMotion/DemoTech.aspx silverlight 3D 游戏开发 时间:2010-10-22 06:33来源:开心银光 作者:黎东海 点击: 562次意外发现一个silverlight的实时3D渲染引擎。性能比开源那些强很多。 而且支持直接加载maya,3Dmax等主流3D模型文件。 附件附上它的…

redis终端简单命令

keys * 获取所有键lRange hongbao:44 0 -1获取该键的所有值del hongbao:44 删除该键的所有值 hgetAll user:44 获取该键的所有队列hget hongbao:44 8 获取该队列用户为8的值hset hongbao:44 7 asdf设置该队列用户为7的值hdel user:44 8 删除该队列用户为8的值 flushall 清空red…