許多業務流程要求在將來某個日期安排事件。例如,在與客戶進行初次銷售聯系后,我們可能希望在將來的某個時間安排跟進電話。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消息中解包原始消息并將其發布到總線。
安裝調度程序服務
-
在SQL Server中,創建一個新的數據庫EasyNetQ.Scheduler
-
獲取EasyNetQ的源代碼
git clone?git@github.com?:mikehadlow/EasyNetQ.git
-
在Visual Studio中打開EasyNetQ.2012解決方案。在DatabaseScripts - > EasyNetQ.Scheduler文件夾中,您將找到許多SQL腳本。在EasyNetQ.Scheduler數據庫中打開并運行它們。您將需要首先運行CreateWorkTables.sql,其他是存儲過程腳本,并且可以按任何順序運行。
-
構建解決方案。
-
找到\ Source \ EasyNetQ.Scheduler \ bin \ Debug并將內容復制到您選擇的部署文件夾中。
-
在文本編輯器中打開EasyNetQ.Scheduler.exe.config并將'rabbit'和'scheduleDb'連接字符串分別更改為指向RabbitMQ代理和SQL Server實例。
-
打開控制臺窗口并更改部署EasyNetQ.Scheduler的文件夾的路徑。
-
運行以下命令將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
?
?