Comment définir JMSMessageID et JMSCorrelationID correctement?
J'ai fait une application java qui utilise JMS pour envoyer des messages à un MQ File d'attente. J'ai mis le message d'id et id de corrélation avec la setJMSMessageId() et setJMSCorrelationId(). Le messageId semble être remplacés lorsque l'envoi se termine. J'ai googlé un peu, et il semble que le serveur remplace le messageId même lorsque vous l'envoyer.
L'exigence de cette application est que les deux messageId et correlationId ont la même valeur lors de l'envoi et du moment de la réception. N'est-ce pas là tout ce que je peux faire à ce sujet?
Note: je suis à l'aide de JDK 1.6, et a ÉTÉ de 8,5 pour déployer l'application. C'ÉTAIT communique avec un MQ Gestionnaire de File d'attente.
OriginalL'auteur Xanathos | 2014-04-25
Vous devez vous connecter pour publier un commentaire.
Id de Message sont réservés pour le système de messagerie d'ensemble. Vous pouvez le lire et, par exemple, de journal ou même persister, mais rien d'autre. Esp., il n'est pas censé être définies par une application! Le setter est-il que lors de l'intégration entre les deux systèmes de messagerie, c'est à dire lorsque vous recevez un message d'un système de messagerie X et de le transmettre à un autre système de messagerie Y. Alors Y doit être en mesure de définir le message identifiant du message objet, même si Y a pas créé, c'est à dire même si ce n'est pas Y est de mise. Il existe plusieurs méthodes pour ce cas d'utilisation et il est la cause de beaucoup de confusion, il est préférable de les ignorer.
Otoh, que, la corrélation id de votre application. Un schéma très commun, est un requête-réponse paire de messages, et c'est la deuxième source de confusion:
send
méthodes, et les magasins de ce message id.Il y a beaucoup d'autres modèles d'échange de messages, comme une-demande-de nombreuses réponses ou des messages non sollicités, et de la bonne utilisation de la corrélation d'identité est indispensable, mais demande-réponse est de loin le plus fréquent. C'est pourquoi il est même suggéré dans la JavaDoc. Sinon id de message n'ont rien à voir avec la corrélation id. Ceci est source de confusion pour les débutants. J'ai même trouvé qu'il est préférable de corréler les messages avec les clés d'entreprise au lieu de l'id de message.
De revenir à votre question: vous définissez l'id de corrélation avant d'envoyer le message, et l'id du message est défini par le système de messagerie lorsque vous envoyez le message, il n'existe aucun moyen dans l'JMS API pour faire de ces deux valeurs, la même valeur.
L'id du message est mis dans le mode d'envoi, et après que le message réapparaît, le message est probablement déjà persisté en quelque sorte, c'est à dire même si vous souhaitez changer l'objet du message, le message envoyé peut ou peut ne pas avoir l'id de corrélation que vous avez défini. Il peut être vaut la peine d'essayer, mais il n'est absolument pas portable.
OriginalL'auteur rü-
IBM MQ ne nécessite pas de MessageID, MQ va générer un unique MessageID sur son propre. Lors de la réponse, la réponse de l'application doit utiliser le MessageID (défini par IBM MQ)de l'entrant (aka demande) message et de le définir comme CorrelationID sur le message de réponse. De cette façon, le demandeur de l'application sera en mesure de rapporter demande & reponse.
OriginalL'auteur Shashi
Celui qui vous a dit de le faire, ne pas comprendre un message approprié de la conception et ne doit pas être la conception de middleware de l'infrastructure. Un message d'id doit être unique dans un MQ environnement. Si vous avez besoin de partager un jeton/valeur de données entre 2 applications de messagerie puis utilisez l'id de corrélation.
OriginalL'auteur Roger
Partager mon expérience avec les jumeaux Id après 4 années -
JMSMessageID est un titre de propriété établi par le Fournisseur JMS. Il arrive au moment de l'exécution lorsque le message est envoyé à la File d'attente.
Mais JMSCorrelationID est un titre de propriété qui peuvent être définies par les utilisateurs de corréler le même message à travers différents Fournisseurs JMS.
Citant Documentation Oracle -
OriginalL'auteur pro_cheats