簡體   English   中英

多線程JMS在Spring中接收

[英]Multithreaded JMS receiving in Spring

我正在嘗試從隊列中編寫用於JMS消息處理的多線程實現。

我嘗試過使用DefaultMessageListenerContainer和SimpleMessageListenerContainer類。

我遇到的問題是,無論我如何配置它,似乎只是一個MessageListener類的實例被實例化。 這迫使我不必要地編寫無狀態或線程安全的MessageListener實現,因為我將ListenerContainer配置為使用多個線程(concurrentConsumers = 8)。

有一個明顯的解決方案,我忽略了嗎?

這是設計的。 MessageListener是一個你注入Spring的依賴項 - 它沒有辦法實例化新的。

這迫使我不必要地編寫無狀態或線程安全的messageListener實現

你覺得這聽起來很糟糕。 制作MessageListener是一個非常好的主意,Spring只是消除了做其他事情的誘惑。

也許這個答案為時已晚,但它可能會讓那些正在尋找它的人受益。 簡而言之,答案是使用CommonsPoolTargetSourceProxyFactoryBean

有關詳細信息,請查看此鏈接: http//forum.springsource.org/showthread.php?34595-MDB-vs-MDP-concurrency

如果您想為主題做類似的事情,請查看: https//stackoverflow.com/a/12668538/266103

配置“concurrentConsumers”就足以同時處理消息。 這並不意味着您將擁有MessageListenerContainer的“n”個實例。 MessageListenerContainer可以在內部跨越“任務”來處理消息。 (可選)您可能必須相應地配置日志記錄,以查看與基礎任務/線程關聯的信息。

有關更多詳細信息,請參閱“ 在Spring中調整JMS消息消耗 ”。

暫無
暫無

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

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