2009-06-04 8 views
6

Je suis nouveau sur JMS et je travaille sur la configuration d'ActiveMQ avec Tomcat 6 et Spring. J'ai la plupart des choses de base configurées mais je suis un peu confus avec les conteneurs d'écouteurs de messages fournis par Spring. En lisant la documentation, on dirait que le conteneur d'écouteurs de message est utilisé pour "gérer" l'abonnement (je travaille avec des sujets), en désabonnant et en délivrant le message à l'auditeur. Je ne suis pas sûr si je pense à ce sujet correctement. Si tel est le cas, je ne vois aucune documentation sur la façon dont plusieurs classes s'abonnent au même sujet en utilisant le conteneur d'écouteurs de message. Je vois que vous pouvez définir la propriété messageListener mais cela permettrait seulement à une classe de s'abonner à un sujet. Il ne semble pas judicieux de créer une autre instance du même conteneur d'écouteurs de messages juste pour qu'un autre abonné (POJO piloté par message) écoute le même sujet.Spring JMS Message Listener Container

Quelqu'un peut-il nous éclairer à ce sujet? Je pense que je peux être un peu confus.

Merci d'avance!

Répondre

0

Le conteneur est un emballage de sorte à "adapter" tout POJO à la réception de messages provenant d'une file d'attente ou d'un sujet. Si vous désirez plusieurs auditeurs, vous finirez avec plusieurs conteneurs.

4

Si vous êtes familier avec les EJB Message-Driven, un Spring MessageListenerContainer remplacera efficacement une MDB. Il reçoit son nom car il est connecté à la rubrique/file d'attente JMS, ainsi qu'à un seul message JMS MessageListener. Il extrait les messages de cette rubrique/file d'attente et les transmet à votre MessageListener. Vous avez tout à fait raison qu'un seul MessageListener peut être enregistré avec chaque conteneur à la fois, mais considérez que même si le code MessageListenerContainer peut être assez complexe, il s'agit en fait d'un composant d'exécution très léger. N'ayez pas peur de créer plusieurs instances de celui-ci.

De même, veillez à choisir l'implémentation MessageListener appropriée à votre situation. L'implémentation Simple et Default est vraiment très différente, mais elle n'est pas meilleure non plus.

2

Les gars sont corrects que plusieurs conteneurs vous aider, mais il semble que la mauvaise approche. Puisque le but de JMS est d'intégrer des applications/services différents plutôt que des processus d'application internes (plusieurs classes dont vous parlez). Je suggère de pousser le message à différentes classes après les avoir reçues par Message Listener. Sinon, jetez un oeil à des frameworks comme Apache Camel ou Spring Integration.