Activation des services sendReceiveImmediate de messagerie sortante

HCL Commerce peuvent interagir avec d'autres systèmes par le biais des services sendReceiveImmediate (officiellement Envoyer/Recevoir). Cela permet à HCL Commerce d'envoyer un message à un autre système et d'attendre une réponse. Le comportement de SendMsgCmd.sendReceiveImmediate() est similaire à la méthode SendMsgCmd.sendImmediate(), sauf qu'il attend une réponse de retour du système recevant sa requête de message.

Pourquoi et quand exécuter cette tâche

Après avoir envoyé le message de requête, HCL Commerce écoute la file d'attente entrante (par défaut, JMSInboundQueue) et attend que le message de réponse soit placé dans la file d'attente avec un ID de corrélation égal à l'ID de message du message de requête.

Vous devez utiliser des files d'attente séparées pour SendReceiveImmediate à partir des files d'attente utilisées pour l'auditeur WebSphere pour IBM MQ.

Pour activer HCL Commerce afin d'utiliser le service de messages SendReceiveImmediate :

Procédure

  1. Créez un type de message dans la table MSGTYPES pour le nouveau message utilisé pour l'envoi/réception.
  2. Pour générer le message sortant, créez une entrée dans le fichier de configuration Struts pour associer le VIEWNAME créé à l'étape 1 à un fichier JSP.
    Par exemple, dans HCL Commerce version 9.0.0.x :
    
     <forward className="com.ibm.commerce.struts.ECActionForward"
     name="OrderCreateXMLFormatView/0/-3" path="/OrderCreateXML.jsp">
     <set-property property="resourceClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl"/>
     <set-property property="properties" value="storeDir=no"/>
     <set-property property="interfaceName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommand"/>
     <set-property property="implClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl"/>
     <set-property property="direct" value="true"/>
     
    
    Pour les versions 9.0.1 et ultérieures, utilisez cet exemple :
    <result name="OrderCreateXMLFormatView/0/-3" type="wcsstore">
    <param name="implClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
    <param name="interfaceName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommand</param>
    <param name="resourceClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommand</param>
    <param name="properties">storeDir=no</param>
    <param name="direct">true</param>
    <param name="location">/OrderCreateXML.jsp</param>
    </result>

    L'entrée doit utiliser les valeurs suivantes :

    INTERFACENAME
    com.ibm.commerce.messaging.viewcommands.MessagingViewCommand
    CLASSNAME
    com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl
    PROPERTIES
    docname= JSP filename

    La valeur de l'attribut "nom" est le VIEWNAME utilisé pour générer le message à envoyer.

  3. Créez un fichier JSP pour générer le message à envoyer à la file d'attente sortante. Ce nom de fichier JSP doit avoir été spécifié lors de l'ajout d'une ligne au fichier de configuration Struts.
  4. Créez ou personnalisez une commande (commande de tâche uniquement, si vous travaillez avec la personnalisation) qui utilise le mode SendMsgCmd.sendReceiveImmediate() et l'ID de type de message créé à l'étape 1. Il sert à appeler l'interface SendMsgCmd.
  5. Utilisez la console d'administration pour vous assurer que le transport affecté au service SendReceiveImmediate est actif, tel que l'adaptateur IBM MQ.
  6. Utilisez la console d'administration pour définir chaque type de message que vous avez créé à l'étape 1. Dans la zone Mode, spécifiez 1. Cela indique un mode de communication SendReceiveImmediate.

Résultats

Après avoir envoyé un message sortant qui nécessite une réponse :

  1. HCL Commerce commence à écouter un message de réponse dans la file d'attente cible une fois que la commande d'envoi du message est appelée.
  2. L'application tierce reçoit et consomme le message et génère un message de réponse contenant un ID de corrélation qui correspond à l'ID de message de la requête d'origine. Elle place ensuite le message de réponse dans la file d'attente cible où HCL Commerce attend qu'il apparaisse.
  3. HCL Commerce trouve le message contenant l'ID de corrélation correspondant à l'ID de message du message de requête sortant. La commande traite ensuite la charge utile du message de réponse.