2017-04-26 43 views
0

我目前正在研究設置spring cachedConnectionFactory sessionCahceSize的項目,請提供關於sessionCacheSize爲1(3個目標)爲什麼註冊1+(約3個)JMS緩存消息生成器的答案目的地?已啓用cachedProducers的Spring JMS CachingConnectionFactory

此應用程序在交易模式與當前的線程運行的大小爲1

我是否應該尋找到確定空閒緩存生產者和驅逐緩存的生產進行優化的策略是什麼?

+0

打開連接工廠的TRACE級別日誌記錄以查看生產者緩存周圍的所有活動。 –

+0

是的,我打開了跟蹤,這就是我發現,當我的併發線程配置爲1時,它每個目標註冊2次。 – padminis

+0

編輯問題並添加跟蹤日誌。 –

回答

0

您不會在跟蹤中顯示線程名稱,這會使其更難調試。然而...

生產者/消費者緩存處於Session的級別。如果您在多個線程上發送消息,則可以爲每個緩存會話結束一個緩存生產者。

  • 線程1檢出會話是否發送(緩存新的生產者);檢查會話返回。
  • 線程2檢出同一會話;發送(使用緩存的生產者)。
  • 線程1檢出一個不同的會話(因爲第一個正在使用);做一個發送(爲那個dest/session緩存一個新的生產者)。
  • 線程2個檢查會話

的3(3目的地)sessionCacheSize

它不工作的方式;會議不與目的地綁在一起;他們是一般的會話,會爲每個目的地緩存一個生產者。

+0

基於上述評論,我是否應該研究識別閒置緩存生產者和驅逐緩存生產者的策略優化? – padminis

+0

我不知道有這樣做的機制(與標準工廠)。緩存的生產者只要擁有自己的會話就能生活。 –