![](/img/trans.png)
[英]How to read MSMQ messages from a remote machine without installing message queueing on local machine?
[英]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.