Send()當隊列已滿時不會引發異常。我有兩個私人消息隊列,比如隊列和隊列1,我設置隊列1的消息存儲量爲5120 kb,在我的程序中我發送消息給隊列和隊列1,當隊列1已滿而全局隊列未滿,則隊列1上的Send()方法不會引發異常,爲什麼?我期待queue1的send()方法拋出異常,所以我知道它已滿。單個隊列上的消息隊列存儲限制不起作用?
1
A
回答
1
我認爲這是由設計:
從MSMQ FAQ:
MQSendMessage()總是會成功,即使它是明顯, 消息無法發送。爲什麼? MQSendMessage()的成功不會保證將郵件傳遞到其最終目的地。 MQSendMessage()的成功僅僅意味着本地MSMQ服務 已成功接受該消息,並且只要 可能就會處理它。它並不意味着將郵件傳遞到其目標隊列的任何保證 。傳遞 消息失敗的原因很多。例如:
- 您嘗試向事務隊列發送非事務性消息。
- 您將消息發送到超過其配額的隊列。
- 您將消息發送到不授予您發送權限的隊列。
- 使用DIRECT格式名稱向不存在的計算機發送消息。
MQSendMessage()將在所有這些情況下通過設計成功。它是拒絕這些消息的目的地計算機 。或者消息 將在傳出隊列中等待,直到它到期。
+0
如果目的地是遠程的。發送將在本地傳出隊列中創建消息,它不知道任何配額限制。如果目標是本地的,則發送應該嘗試直接在本地隊列中創建消息並失敗。 –
+0
@JohnBreakwell,如果隊列是本地的,並且我在單個隊列上設置了配額限制,當隊列已滿時,Send()仍然成功無例外。 – Benny
相關問題
- 1. Azure隊列存儲不發送隊列消息
- 2. 限制Azure存儲隊列中消息處理嘗試次數
- 3. 集成的消息隊列綁定不起作用消息類
- 4. azure隊列存儲 - 將消息放回隊列
- 5. 複製的消息隊列
- 6. Azure隊列存儲消息大小
- 7. 在消息隊列中存儲變量
- 8. 簡單拉消息隊列
- 9. Websphere消息隊列
- 10. 消息從隊列
- 11. Sinatra消息隊列
- 12. Boost消息隊列
- 13. unix消息隊列
- 14. IPC - 消息隊列
- 15. 消息隊列ENOMEM
- 16. Mail ::隊列不起作用
- 17. 僅限本地消息隊列?
- 18. WSMQ隊列限制
- 19. 公共消息隊列異常:消息隊列異常:隊列不存在或您沒有足夠的權限執行操作
- 20. Boost消息隊列不基於POSIX消息隊列?不可能選擇(2)?
- 21. 使用ftok作爲消息隊列
- 22. 是一個類似於命令隊列的消息隊列嗎?
- 23. 消息隊列的選擇?
- 24. PHP中的消息隊列
- 25. jquery的消息隊列
- 26. java中的消息隊列
- 27. Spring的Redis消息隊列
- 28. linux中的消息隊列
- 29. 爲Azure Web作業輸出隊列預防空隊列消息
- 30. 帶生存時間的消息隊列
請說明發件人和隊列是否在同一臺或不同的機器上 –