2009-03-08 4 views
1

Je reçois l'erreur suivante:Besoin d'aide avec Java JMS ResourceAllocationException

javax.jms.ResourceAllocationException: [C4073]: A JMS destination limit was reached. Too many Subscribers/Receivers for Queue

La configuration a été faite de telle manière qu'il y ait un fournisseur et deux consommateurs. Est-ce la raison pour laquelle cette erreur se produit parce que c'est une file d'attente et qu'elle ne peut avoir qu'un fournisseur et un consommateur?

Répondre

2

Les files d'attente dans JMS sont des mécanismes point à point, vous n'êtes pas censé les utiliser si vous avez plusieurs consommateurs. Vous devriez utiliser des sujets pour cela. Envoyez le code complet si vous le souhaitez, afin que nous puissions essayer d'aider davantage, car ce n'est pas vraiment clair ce que fait votre code.

JMS concepts de base http://java.sun.com/products/jms/tutorial/1_3_1-fcs/doc/basics.html

Cela étant dit, selon Sun, voici l'info pour cette erreur:

C4073 

Message A JMS destination limit was reached. Too many Subscribers/Receivers for {0} : {1} 

{0} is replaced with “Queue” or “Topic” {1} is replaced with the destination name. 

Cause The client runtime was unable to create a message consumer for the specified domain and destination due to a broker resource constraint. 
0

Vous pouvez réellement utiliser les files d'attente avec plusieurs consommateurs. Les sujets peuvent ne pas être ce que vous voulez. Un sujet fonctionnera comme un modèle de publication/abonnement, où chaque consommateur recevra une copie du message; tandis qu'avec les files d'attente, le fournisseur JMS doit uniquement envoyer le message à un consommateur.

Il se peut qu'un paramètre de configuration de votre fournisseur JMS vous limite à un consommateur par file d'attente. Je n'ai utilisé qu'ActiveMQ pour JMS, mais cela vous permet d'avoir plusieurs clients dans une seule file d'attente - il s'agit en fait d'équilibrer la charge entre les consommateurs.