簡體   English   中英

MSMQ-我可以查詢當前正在處理的消息嗎?

[英]MSMQ - can I query messages which are currently being processed?

我正在將WCF與MSMQ端點一起使用,並看到此問題中描述的行為-基本上,盡管該服務被限制為一次處理一條消息,但從隊列中取出了2條消息,其中一條似乎保留在內存中,而另一條則保留正在處理。

這帶來了監視正在發生的事情的問題。 我有一個監視頁面,該頁面顯示隊列中有哪些作業以及正在處理哪些作業,但是由於此行為,有一段時間會在將作業從隊列中取出但尚未開始處理時有效地消失。 我正在使用MessageQueue.GetAllMessages()來獲取當前在隊列中的消息列表。

我對MSMQ不太熟悉,但是我假設消息出隊時將其標記為不可見,以便其他進程不會將其刪除。 有沒有一種方法可以查詢這些消息,以便查看它們是什么?

我可以看到這特別令人討厭,特別是對於低消息量和消息處理程序,該消息處理程序在返回獲取下一條消息之前啟動了長時間運行的過程。

但是,從語義上講,當消息從隊列中消失時,它實際上正在被處理 ,只是處理有時涉及無限期地緩存消息。

只要您使用事務性隊列,如果由於某種原因該服務消失了,隱藏的消息就不會被丟棄。

意識到這並不能直接回答您的問題。

如果您真的想這樣做,請嘗試使用光標 Peek 雖然聽起來像是監視頁面的殺手kill。

MSDN上的MessageQueue.Peek

您可以對其進行設置,以便獲得完整的消息等,而不必確定對性能的影響。 我之前做過類似的事情...

暫無
暫無

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

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