J'essaie d'écrire une implémentation multithread pour le traitement des messages JMS à partir d'une file d'attente.JMS multithread recevoir au printemps
J'ai essayé avec les classes DefaultMessageListenerContainer et SimpleMessageListenerContainer. Le problème que j'ai est qu'il semble que juste une seule instance de la classe MessageListener soit jamais instanciée, peu importe comment je le configure. Cela m'oblige à écrire inutilement des implémentations de MessageListener sans état ou sans thread, puisque j'ai le ListenerContainer configuré pour utiliser plusieurs threads (concurrentConsumers = 8).
Existe-t-il une solution évidente à cela que je néglige?
Je ne comprends pas. Je fais mon MessageListener. Je veux juste qu'il profite des multi-cœurs de ma machine pour traiter les choses en parallèle. –
@Iker: Oui, et le MessageListenerContainer engendrera plusieurs threads pour cela, avec tous les threads utilisant la même instance de 'MessageListener'. La multiplication d'auditeurs est inefficace et inutile. – skaffman
Ok, que je comprends. Mais disons que pour chaque message JMS, vous devez traiter un travail qui prend quelques secondes. Je veux pouvoir utiliser un ensemble d'instances complètement distinct pour traiter chacun des messages. Devrais-je générer des threads à partir de MessageListener alors? –