簡體   English   中英

從C#(可能的服務代理)連續處理SQL隊列

[英]Continuous Processing of SQL Queue from C# (Potentially Service Broker)

我正在尋找創建一個始終發生事件的應用程序。 新數據將從各種源輸入到臨時表中,這些源將無法觸發其他應用程序或無法訪問業務邏輯。 這些數據源將數據放入表中,一旦在表中,它就要求處理信息。 一個例子是多個來源能夠訂購商品,銷售進入salesQueue表,必須將其處理成訂單才能發貨。

在此示例之后,我需要通知C#應用程序已將新記錄插入到Queue表中。 我已經閱讀了很多關於Service Broker的文章,它似乎是一條很好的路徑,但我還沒有找到一個很好的例子,將記錄插入表中,然后通知C#應用程序然后處理。

另外我有這些問題:1)連續運行(或按需運行)這個C#應用程序,Windows服務,監聽等命令提示應用程序的最佳方法是什么? 2)是否有一種從多個源處理此隊列的好方法,也就是我編寫的C#應用​​程序可以在許多不同的機器上運行並通過隊列進行處理?

您需要的功能稱為外部激活 - 從MS 下載 ,允許您配置Windows服務以指向隊列並在郵件到達時觸發可執行文件。

我建議你看一下像AMQP這樣的消息傳遞協議和像RabbitMQ這樣的實現。

如果您可以控制源,則可以讓它們寫入RabbitMQ。 然后擁有您想從RabbitMQ中讀取的消費者數量。

如果您沒有選擇將源寫入RabbitMQ,您可以編寫C#代碼作為服務運行並從數據庫獲取新記錄並將它們推送到RabbitMQ。

關於你的具體問題:1)如果你需要檢查數據庫的時間間隔是幾秒或更短的時間,那么我建議一個Windows服務,但如果它超過那個,如分鍾或小時,那么我建議你寫一個C#控制台程序並使用Windows調度程序安排它。

2)正如我所提到的,我建議你使用AMQP的實現,不要重新發明輪子。 RabbitMQ開箱即用的是C#客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM