Transmission de la charge de messages par référence : Avantages potentiels de chaque étape de traitement

Pour chaque étape de traitement effectuée par votre application de messagerie JMS, consultez cette table pour savoir quand et pourquoi il existe un gain de performances potentiel si vous activez les propriétés de "transmission de la charge utile des messages par référence" sur la spécification d'activation ou la fabrique de connexions associée.

Lorsque des messages volumineux de type objet ou octet sont envoyés, la quantité de mémoire et le traitement processeur nécessaires pour sérialiser, désérialiser et copier les messages peuvent être importants. Si vous activez les propriétés de transmission de la charge de messages par référence sur une fabrique de connexions ou une spécification d'activation, vous pouvez demander au fournisseur de messagerie par défaut d'ignorer la spécification JMS 1.1 et de limiter fortement ou d'ignorer la copie de ces données.

ATTENTION :
Les parties de la spécification JMS ignorées par ces propriétés sont définies pour assurer l'intégrité des données. Toute application JMS utilisant ces propriétés doit respecter strictement les règles décrites dans la rubrique Pourquoi et quand transmettre la charge utile des messages JMS par référence, pour éviter la perte de l'intégrité des données.
Pour transmettre la charge de messages par référence, définissez les propriétés suivantes sur les fabriques de connexions et les spécifications d'activation :
Paramètre de la propriété producerDoesNotModifyPayloadAfterSet (pour les fabriques de connexions) ou forwarderDoesNotModifyPayloadAfterSet (pour les spécifications d'activation)
Lorsque cette propriété est activée, les messages de type objet ou octet générés par la fabrique de connexions ou acheminés via la spécification d'activation ne sont pas copiés lorsqu'ils sont définis dans le message et sont uniquement sérialisés lorsque cela s'avère nécessaire. Les applications qui envoient ce type de message ne doivent pas modifier les données une fois que celles-ci sont définies dans le message.
consumerDoesNotModifyPayloadAfterGet
Lorsque cette propriété est activée, les messages de type objet reçus via la fabrique de connexions ou la spécification d'activation ne sont sérialisés que lorsque cela s'avère absolument nécessaire. Les données obtenues à partir de ces messages ne doivent pas être modifiées par les applications.
Tableau 1. Optimisation potentielle des performances pour chaque étape de traitement effectuée par l'application émettrice, destinataire ou de réacheminement. La première colonne du tableau contient les étapes de traitement des objets et des messages d'octets. La deuxième colonne indique si les performances peuvent être améliorées. La troisième colonne explique brièvement les processus et les propriétés.
Etape de traitement Optimisation des performances possible ? Explication
Messages de type objet avec des applications émettrices et destinataires    
Un message de type objet est envoyé à une application destinataire dans la même machine JVM. Les propriétés producerDoesNotModifyPayloadAfterSet et consumerDoesNotModifyPayloadAfterGet sont toutes deux activées. Yes Dans certaines conditions, l'objet de charge est transmis par référence à l'application destinataire.

Si le message n'est pas persistant ou n'est pas inclus dans la transaction et que l'application destinataire est immédiatement disponible, l'objet de charge risque de n'être jamais sérialisé.

Un message de type objet est généré avec la propriété producerDoesNotModifyPayloadAfterSet activée, reçu par une application destinataire pour laquelle la propriété consumerDoesNotModifyPayloadAfterGet n'est pas activé. Non Il n'y a aucun avantage car l'application destinataire n'a pas la propriété consumerDoesNotModifyPayloadAfterGet activée.
Un message de type objet est envoyé à une application destinataire unique dans une machine JVM différente. Les propriétés producerDoesNotModifyPayloadAfterSet et consumerDoesNotModifyPayloadAfterGet sont toutes deux activées. Non Il n'y a aucun avantage obtenu car l'application destinataire unique se trouve dans une autre JVM.
Un message de type objet est reçu par plusieurs applications destinataires (sujet) qui possèdent toutes la propriété consumerDoesNotModifyPayloadAfterGet activée et s'exécutent toutes dans la même machine JVM. Yes Toutes les applications destinataires dotées de la propriété consumerDoesNotModifyPayloadAfterGet activée peuvent recevoir une référence au même objet mais ce n'est pas garantie.
Messages de type objet avec des applications de réacheminement    
Un message de type objet est réacheminé et l'application de réacheminement accède à la charge du message. Les propriétés consumerDoesNotModifyPayloadAfterGet et producer/forwarderDoesNotModifyPayloadAfterSet sont activées. Yes Il y a un gain de performances potentiel dans les cas suivants :
  • L'expéditeur du message réacheminé possède la propriété producerDoesNotModifyPayloadAfterSet activée et se trouve dans la même machine JVM que l'application de réacheminement.
  • Le destinataire du message réacheminé possède la propriété consumerDoesNotModifyPayloadAfterGet activée et se trouve dans la même machine JVM que l'application de réacheminement.
Un message de type objet est réacheminé et l'application de réacheminement accède à la charge du message. Seule la propriété producer/forwarderDoesNotModifyPayloadAfterSet est activée. Yes Les performances peuvent être améliorées si le destinataire du message réacheminé possède la propriété consumerDoesNotModifyPayloadAfterGet activée et se trouve dans la même machine JVM que l'application de réacheminement.
Un message de type objet est réacheminé et l'application de réacheminement n'accède pas à la charge du message. Non Si l'application de réacheminement n'accède pas à la charge du message de type objet, les propriétés producer/forwarderDoesNotModifyPayloadAfterSet et consumerDoesNotModifyPayloadAfterGet n'ont pas d'effet pour l'application de réacheminement. Les avantages obtenus de l'application émettrice d'origine ou l'application destinataire finale sont conservés.
Messages de type objet avec des médiations    
Un message de type objet est envoyé à une destination de bus d'intégration de services soumis à une médiation. Non Si le message de type objet est envoyé à une destination soumise à une médiation, l'activation de la propriété producerDoesNotModifyPayloadAfterSet n'entraîne pas une amélioration des performances.
Messages de type octet avec des applications destinataires    
Un message de type octet est envoyé à une application destinataire. La propriété producerDoesNotModifyPayloadAfterSet est activée. Yes La partie de la spécification JMS qui demande la copie des données lors de leur définition dans le message est ignorée, ce qui permet d'éviter une copie des données de type octet.
Un message de type octet est reçu avec la propriété consumerDoesNotModifyPayloadAfterGet activée. Non L'API JMS ne permet pas de renvoyer par référence les données de type octet au code destinataire (méthodes BytesMessage.readBytes).
Un message de type octet est reçu par plusieurs destinataires (un sujet) qui ont tous la propriété consumerDoesNotModifyPayloadAfterGet activée. Non L'API JMS ne permet pas de renvoyer par référence les données de type octet au code destinataire (méthodes BytesMessage.readBytes).
Messages de type octet avec des applications de réacheminement    
Un message d'octets est acheminé. Non Il n'y a pas d'avantages liés à l'activation de l'une des propriétés de transmission de la charge de messages par référence.

Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cjn_passbyref_steps
Nom du fichier : cjn_passbyref_steps.html