簡體   English   中英

Weblogic JMS高吞吐量生產者/消費者

[英]Weblogic JMS high throughput producer/consumer

我正在開發一個項目,我們有一個高吞吐量的jms消息生產(順便說一下,也是消費者)。 一些測試讓我相信我沒有正確使用JMS消息生產。 首先讓我解釋一下這個場景:我們有一個包含13個隊列的Weblogic集群(2個節點)。 消息在UDP偵聽器(Netty)上接收,並在第一個隊列上創建一個ByteMessage,依此類推。 通過一些分析,我發現第一步並不需要很長時間才能執行,而且它的消費者和消息都不會長時間停留在隊列中。 它們是非持久的,交付時間為0(零)。 一個改進是緩存de connectionFactory,ConnectionQueue,Queue和QueueSession並永遠使用它們。 但這不可能是正確的。 我的意思是,我們不應該打開那些資源,永遠不要關閉它們,對嗎? 什么應該真正緩存,什么時候應該釋放連接和會話? 我應該為每個要發送的消息創建會話還是可以重用它? 我的意思是,考慮到正確的資源處理,在隊列(每秒300左右)上生成大量jms消息的最佳方法是什么? 我被困在這里,我找到的所有消息都告訴我,當工作完成時它總是關閉,但它從未完成(它總會收到大量的消息)。

提前問候。

編輯:我忘了說MDB有默認的16個消費者大小,理論上考慮到單個消息所需的處理時間,應該足以消耗所有消息而不“存儲”它們。

您需要緩存JMS對象。

如果您使用的是Java EE服務器,那么它應該為您執行此操作。 我相信這是可配置的。

https://community.jboss.org/wiki/ShouldICacheJMSConnectionsAndJMSSessions

連接,會話,消費者和生產者等JMS對象被設計為可重復使用。 在大多數實現中,連接和會話是非常重要的設置和消費者通常需要網絡往返設置。 生產者通常更輕量級,但創建它通常會有一些開銷。

Spring還提供連接和會話緩存包裝器。

調整WebLogic JMS http://docs.oracle.com/cd/E28280_01/web.1111/e13814/jmstuning.htm

暫無
暫無

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

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