3 votes

Le client Java ActiveMQ ne reçoit pas de messages

J'essaie de mettre en œuvre des tests de performance sur ActiveMQ, et j'ai donc configuré un producteur et un consommateur de base pour envoyer et recevoir des messages dans une file d'attente. J'ai créé un producteur sans problème, en lui faisant écrire un nombre spécifique de messages dans la file d'attente :

 for(int i = 0; i < numberOfMessages; i++){
                try{
                    String message = generateText(sizeOfMessage);
                    produceMessage(message);
                }
                catch (Exception e) {
                    logger.error("Caught exception while sending message", e);
                }
            }

Cette opération se poursuit sans problème et je l'ai confirmé par des vérifications sur le site Web d'administration, où le nombre de messages en attente est correct.

Le problème survient lorsque j'essaie de recevoir les messages de la file d'attente. En utilisant un simple consommateur pour lire la file d'attente, il lira un nombre variable de messages de la file d'attente, mais s'arrêtera lorsqu'il essaiera de recevoir un des messages. Je peux voir qu'il y a encore des messages à lire dans la file d'attente, mais le client ne passe pas l'un de ces messages. J'utilise une méthode simple pour recevoir les messages :

Message message = jmsTemplate.receive();

et il fonctionne pour quelques messages (environ 20-30) mais ensuite il se bloque. On m'a suggéré que certains des caractères du message pouvaient être un caractère d'échappement (j'utilisais une chaîne aléatoire de longueur variable, car il s'agissait juste d'un test de performance, et non d'un envoi de contenu). J'ai donc remplacé tous les messages par la même chaîne, qui est une répétition du caractère '2', et toujours pas de chance. J'utilise la configuration Spring pour charger tous les composants nécessaires pour accéder à la file d'attente ActiveMQ, et la file d'attente fonctionne sur mon hôte local.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X