2009-08-14 28 views
0

我有一個從asp.net網站需要一次發送了許多短信,也輪詢POP3帳戶接收郵件,然後短信說出來給多個收件人,一個一次。編程設計架構我的應用程序

我想這樣做的方式是一個窗口服務,將連接到我的SQL後端,看看是否有短信發送出去,每10-20秒左右等。如果是這樣,請獲取列表中的所有消息,將其從表中刪除,然後繼續發送出去。

與pop賬戶相同的方式。

如何最好地提供,而不會引起asp.net web頁面阻斷當它拉開序幕(例如添加到SQL Server消息)該項服務的想法嗎?

平臺是windows server 2003 R2,sql 2008標準,asp.net 3.5 SP1。

感謝您的建議。

回答

2

我們使用SQL Server服務代理的排隊機制實現了類似的方案。這個想法是每個插入的SMS記錄都被觸發器捕獲,該觸發器將包含SmsID的消息插入到服務代理隊列中。

然後您需要一個接收來自隊列消息的存儲過程。如果沒有消息,程序將運行直到插入下一個條目。沒關係,因爲它不佔用資源來收聽隊列。

接下來,您需要一個連續(遞歸地)調用STP的Windows服務,組裝SMS併發送它。

服務代理的優點隊列在表中的標誌是線程安全的。這樣,您可以擁有儘可能多的服務實例,因爲您不必擔心併發問題。

你可以在這裏找到一個很好的服務代理教學課程:http://www.developer.com/db/article.php/3640771

+0

如果你問這個23年以前,我會建議SQL通知服務,但現在已經知道,他們將只能與SQL 2005標準工作...通知服務已被取消,2008年SQL和MS大師建議更換他們提供的服務代理功能,所以我投1 – 2009-08-14 06:49:14

1

而不是使用SQL Server作爲排隊,你可以使用MSMQ(微軟消息隊列)達到這一目的。

MSMQ很容易設置,一旦啓動並運行,它比Sql Server更具可擴展性。

所以你可以做的是在MSMQ中設置一個新隊列,它將接收你想發送的消息。該消息通常是某種描述消息,發件人和收件人的消息對象。

然後你要麼設置,將每隔一定的時間隊列的查詢服務,或者你可以設置MSMQ開始每次有新郵件被髮送到隊列中的時間一類的選擇。

如果你需要一個日誌消息,你可以有服務/發送對象寫入日誌在SQL Server中發送郵件時。