簡體   English   中英

如何以編程方式知道機器上是否啟用了消息隊列?

[英]How to know programmatically whether Message Queueing is enabled on the machine or not?

我知道當我嘗試創建新的MessageQueue ,如果未啟用消息隊列,系統會拋出InvalidOperationException

但是如何以編程方式知道機器上是否啟用了消息隊列? 我在兩個不同的代碼庫中使用 C# 2.0 和 C# 4.0。

您可以為此使用System.ServiceProcess ,但首先您需要添加對您的項目的引用Service.ServiceProcess ,您可以檢索所有服務並獲取它們的狀態,如下所示:

List<ServiceController> services = ServiceController.GetServices().ToList();
ServiceController msQue = services.Find(o => o.ServiceName == "MSMQ");
if (msQue != null) {
    if (msQue.Status == ServiceControllerStatus.Running) { 
        // It is running.
    }
} else { // Not installed? }

回答有點晚,但如果您是腳本愛好者,Powershell 將為您提供幫助。 要獲取數字的狀態更新,請使用以下腳本:

$queues = Get-WmiObject Win32_PerfFormattedData_msmq_MSMQQueue
$queues | ft -property Name,MessagesInQueue

這將顯示隊列名稱和每個隊列中的項目數。 希望有一天這會幫助某人。 :D

您已經在那里回答了您自己的問題:嘗試創建一個新的 MessageQueue,並捕獲 InvalidOperationException。

如果沒有異常,則啟用MQ; 如果出現異常,則表示未啟用。 (如果創建了該 MessageQueue 實例,您可以處理它,因為您僅將其用於檢測支持)

暫無
暫無

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

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