12
我目前有一個數據庫從遺留應用程序獲取更新。我想利用SQL Service Broker隊列,以便在更新記錄時將消息放入隊列中(使用觸發器或其他)。SQL Service Broker和.NET Windows服務 - 最佳實踐?
然後我想要一個長時間運行的應用程序(用.NET編寫的Windows服務),它不斷「偵聽」隊列以獲取消息併爲其他應用程序處理消息。
我在網上找到了一些示例代碼,只是想知道代碼是否穩定。因此,下面是Windows服務類的縮寫版本:
public class MyService
{
public void StartService()
{
Thread listener = new Thread(Listen);
listener.IsBackground = true;
listener.Start();
}
private void Listen()
{
while (true)
{
using (SqlConnection connection = new SqlConnection(_connectionString))
{
string commandText = "WAITFOR (RECEIVE * FROM MyQueue);";
using (SqlCommand command = new SqlCommand(commandText, connection))
{
connection.Open();
command.CommandTimeout = 0;
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
// Process message
}
}
}
}
}
}
您認爲如何?代碼完全按照我想要的方式工作。但是關掉一個包含SQL命令的新線程的想法永遠不會超時 - 在一個無限循環內 - 讓我有點緊張。