2017-10-11 3 views
1

Existe-t-il un moyen de configurer une file d'attente de messages JMS pour supprimer automatiquement tous les messages reçus? (En d'autres termes: pour l'expéditeur, il doit sembler que le message est arrivé correctement, mais la file d'attente devrait le laisser tomber silencieusement, c'est-à-dire que la file devrait se comporter comme "/ dev/null"). dans IBM MQ, cependant, si la spécification JMS offre cette possibilité, ce serait encore mieux.Configurer la file d'attente JMS pour supprimer tous les messages à des fins de test

Puisque j'ai déjà essayé de chercher et que je n'ai pas trouvé une telle possibilité, je pense que la réponse est "non". Donc une réponse qui confirme que c'est le cas (et je ne manque rien) est aussi valable pour moi. Cas d'utilisation: tester un système qui envoie des messages à une véritable file d'attente JMS, qui (dans la configuration de test) n'est pas lue par un autre programme. (Je ne veux pas me moquer de la file d'attente JMS, pour garder l'environnement de test le plus proche possible de la production.) Pour la même raison, il n'est pas non plus possible de définir "time to live" pour les messages côté client.

+0

Quelle version d'IBM MQ est en cours d'exécution sur la crèche de file d'attente? – JoshMc

+0

Je ne suis pas sûr ... y aurait-il une bonne solution pour certains de la version, qui n'est pas disponible pour l'autre? – Attilio

+0

La solution sub pub fournie par @JasonE fonctionnerait avec v7.0 et plus tard et non avec v6 et inférieur. V7.5 est la version la plus basse actuellement supportée mais j'ai demandé parce qu'il y a encore beaucoup de gens qui utilisent de très vieilles versions non supportées de MQ. La solution fournie par Jason est ce que j'allais suggérer en supposant que vous utilisiez la version 7 ou ultérieure. Sur la base de vos commentaires, vous avez une solution en place comme suggéré par Roger, mais vous recherchez quelque chose comme Jason accepté, je vous suggère d'accepter la réponse de Jason. – JoshMc

Répondre

2

Que diriez-vous de faire de la file d'attente un alias à un sujet sans que personne ne l'écoute?

.: par exemple

def qalias(MYQUEUE) target(DUMMYTOPIC) targtype(TOPIC) 
def topic(DUMMYTOPIC) topicstr(DUMMYTOPIC) 

Ensuite, vous pouvez mettre à la file d'attente, il devient un et si Noone publier écoute sur la file d'attente, il disparaît. amqsput MYQUEUE QM par exemple fonctionnera bien. Lorsque vous souhaitez ensuite consommer les messages, modifiez le QALIAS en pointant vers une file d'attente réelle ou remplacez la définition QALIAS par un QLOCAL par exemple.

Le seul inconvénient est que si quelqu'un est abonné à tous les sujets, mais à des fins de test, vous pouvez

0

Si vous voulez une approche différente où vous pouvez contrôler (activer/désactiver) le flux des messages en cours de suppression/supprimé , puis un service MQ et mon programme 'emtyq' est une autre option.

est ici une écriture je l'ai fait il y a un moment sur le sujet: http://www.capitalware.com/rl_blog/?p=3680

+0

Oui (bien que je ne l'ai pas écrit dans la question), notre approche est similaire: nous avons un programme fictif pour lire la file d'attente. Cependant, je cherchais un moyen de configuration seule (semblable à la réponse de @JasonE). C'est marrant cependant: en bas du post lié, une variante de la réponse de @ JasonE est également mentionnée :) – Attilio