首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 中進行訊息處理 (MSMQ) 實戰篇(三)

     編輯:關於ASP.NET

前言

前兩篇介紹 MSMQ 基礎與優先級,本文以開源專案 PetShop 中的 MSMQ 應用為例,說明實際專案如何整合多執行緒監控佇列。

一、多執行緒與 MSMQ

需求:指定佇列無論有無訊息,啟動多執行緒持續監控,一旦有訊息立即讀取處理。

執行緒陣列定義

static private int ThreadNumber = 5;
static private Thread[] ThreadArray = new Thread[ThreadNumber];

啟動執行緒

private void button1_Click(object sender, EventArgs e) { StartThreads(); }

private void StartThreads() {
    for (int counter = 0; counter < ThreadNumber; counter++) {
        ThreadArray[counter] = new Thread(new ThreadStart(MSMQListen));
        ThreadArray[counter].Start();
        this.richTextBox2.Text += (counter + 1).ToString() + "號執行緒開始!";
    }
}

監聽邏輯

private void MSMQListen() {
    while (true) {
        // 取出佇列訊息 (阻塞直到有訊息)
        MessageBox.Show(MsgQueue.ReceiveMessage());
    }
}

二、PetShop 架構啟發

PetShop 使用專用應用程式 (Windows Service) 承載多執行緒監聽器,將訊息處理邏輯與 Web 前端分離,達到高可用與擴展性。實務上建議:

  • 使用 MessageQueue.BeginReceive 非同步模式,避免阻塞執行緒。
  • 配合 TransactionScope 確保訊息處理的原子性。
  • 採用 Poison Message 機制處理重複失敗的訊息。

結語

多執行緒監控 MSMQ 是高併發系統常見模式,搭配非同步與交易機制可構建健壯的訊息處理管線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved