Les problèmes suivants concernent le courtier de Message Queue.
Les clients Message Queue 4.4 reçoivent un avertissement incompréhensible lors de la connexion aux courtiers Message Queue 3.7 (bogue 6899886).
Lorsqu'un client Message Queue 4.4 se connecte à un courtier Message Queue 3.7, le client reçoit un message d'avertissement qui se présente comme suit :
WARNING [I500]: Caught JVM exception: ... [C4036]: A broker error occurred. :[505] bad version ...
Cet avertissement de "version incorrecte" indique que le client doit se reconnecter au courtier à un niveau de protocole inférieur.
Lors de l'utilisation d'un magasin de données JDBC, le mot de passe de la base de données est stocké dans du texte en clair (bogue 6691717).
Solution : sécurisez le fichier de mot de passe contenant le mot de passe de la base de données comme indiqué dans la section Password Files du Sun GlassFish Message Queue 4.4 Administration Guide.
Le courtier devient inaccessible lorsque le magasin de données persistant ouvre trop de destinations. (Bogue 4953354)
Solution : ce problème est dû au fait que le courtier atteint la limite du descripteur de fichier ouvert définie pour le système. Sur Solaris et Linux, utilisez la commande ulimit pour augmenter cette limite.
Les consommateurs sont orphelins lorsqu'une destination est supprimée. ( Bogue 5060787)
Les consommateurs actifs sont orphelins lorsqu'une destination est supprimée. Une fois orphelins, ils ne peuvent plus recevoir de messages (même si la destination est recréée).
Lorsqu'un client JMS utilisant le service de connexion HTTP met brutalement fin à la connexion (en utilisant, par exemple, Ctrl+C), le courtier met environ une minute avant de libérer la connexion client et toutes les ressources associées.
Si une autre instance du client est démarrée dans la minute d'attente en essayant d'utiliser le même ID client, la même souscription durable ou file d'attente, il est possible que celle-ci reçoive une exception « L'ID client est déjà utilisé ». Il ne s' agit pas d'un vrai problème, mais d'un effet secondaire du processus de fin décrit précédemment. Si un client est démarré après un délai d'environ une minute, tout doit fonctionner correctement.
Lors de l'utilisation d'une base de données MySQL pour un magasin de données, le stockage de messages supérieurs à 1 Mo envoie une exception SQL « Packet de requête trop grand ». (Bogue 6682815)
Solution : démarrez le serveur MySQL avec l'option --max_allowed_packet paramétrée sur une valeur supérieure à 1 Mo par défaut. Par exemple, utilisez la valeur suivante :
--max_allowed_packet=60M
Lors de l'utilisation d'une base de données MySQL pour un magasin de données partagées hautement disponible, un mécanisme est nécessaire pour configurer le moteur de stockage de MySQL comme NDBCLUSTER . (Bogue 6691394)
Solution : ajoutez la valeur de propriété suivante au fichier config.properties du courtier (voir la section Enhanced Clusters: JDBC Configuration Properties du Sun GlassFish Message Queue 4.4 Administration Guide).
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER
Lors de l'utilisation du pilote 9i (JDBC 9.2.0.x) d'Oracle, le courtier renvoie une exception « Échec de persistance de la propriété... ». (Bogue 6626825)
Solution : utilisez le pilote 10g (JDBC 10.2.0.x) d'Oracle, pour lequel le courtier est optimisé.
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
Lors de l'utilisation de la base de données Java DB pour un magasin de données, le stockage d'un message envoie une exception SQL « Verrouillage impossible à obtenir dans le délai requis ». (Bogue 6691394)
Solution : ajoutez la valeur de propriété suivante au fichier config.properties du courtier :
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
Lorsque vous utilisez JVM IBM sur AIX, le courtier s'exécute parfois dans des conditions de mémoire faible ou RED sans raison apparente (bogue 6899526).
Solution : utilisez la dernière version de JVM IBM (Java Runtime 1.6.0 IBM Corporation ou version supérieure) et donnez la valeur imqbrokerd à l'option GC de JVM IBM suivante :
# imqbrokerd -vmargs -Xgcpolicy:gencon |