2016-04-07 20 views
0

我們正在開發一個開票發票系統。作爲處理我們請求的一部分,我們需要通過將消息放入隊列來進行異步調用。我們以20TPS的速度工作,並在12秒的整個交易中擁有SLA。偶爾,我們觀察到,當MQ服務器變得非常慢時,但仍然可以運行只需將消息寫入隊列中就需要很多時間。我們想要處理這種情況,並且有一個系統在超出預定的寫入隊列消息限制時引發異常。在將消息寫入隊列時出現延遲時,希望實現寫入超時

簡而言之,我們希望在隊列中寫入消息有延遲時實現寫入超時。任何幫助表示讚賞。

我們知道提到接收響應的超時時間,但我們無法找到任何解決方法,在隊列中寫入消息時提及超時。 我們發現了一些關於重新驗證目的地的建議。但在我們的情況下,我們已經知道目的地是可操作的,我們的系統只在響應期間變得緩慢。

+0

你是如何確定它是_MQ server_變得非常慢? – cschneid

+2

可以工作的唯一方法是,如果PUT操作超過特定的經過時間,則在同步點和MQ BACKOUT下發出PUT。 第二種選擇是讓消費者檢查消息的時間戳並拒絕那些陳舊的消息。另外,請考慮使用MQ報告,以便製片人可以獲得有關COA COD Pos/Neg Action通知等的反饋... – Stavr00

回答

0

當我看到這樣的問題時,首先我笑,然後我搖頭。人們缺乏對基礎設施的瞭解,不瞭解軟件運行的網絡或硬件。

我有很多不同的服務器,MQ上運行它們。例如,運行在具有16GB RAM的Core i7上的Linux,我可以每天在1Gbps網絡上每秒推送180條消息(10KB),並且CPU很少超過15%。

那麼,你的網絡有多快?您是否有通過TCP定期推送大量數據的應用程序? (MQ以外)您在運行隊列管理器的服務器上運行了哪些其他軟件?你是否有服務器上的進程監控工具來顯示哪些進程正在消耗所有的CPU? (如果不是那麼你爲什麼要責怪MQ?)