Habilitar los servicios SendReceiveImmediate de la mensajería de salida

HCL Commerce puede interactuar con otros sistemas a través de los servicios SendReceiveImmediate de la mensajería de salida (anteriormente Envío/Recepción). Esto permite a HCL Commerce enviar un mensaje a otro sistema y esperar una respuesta. El comportamiento de SendMsgCmd.sendReceiveImmediate() es similar al del método SendMsgCmd.sendImmediate() con la excepción de que espera que le devuelva una respuesta el sistema que ha recibido su petición de mensaje.

Por qué y cuándo se efectúa esta tarea

Después de enviar el mensaje de solicitud, HCL Commerce está a la escucha en la cola de entrada (de forma predeterminada, JMSInboundQueue) y espera hasta que el mensaje de respuesta se coloca en la cola con un ID de correlación igual al ID de mensaje del mensaje de solicitud.

Para SendReceiveImmediate debe utilizar colas distintas de las colas utilizadas para el Escucha de WebSphere para IBM MQ.

Para habilitar HCL Commerce para que utilice el servicio de mensajería menSendReceiveImmediate:

Procedimiento

  1. Cree un tipo de mensaje en la tabla MSGTYPES para el mensaje nuevo que se utiliza para el Envío/Recepción.
  2. Para generar el mensaje de salida, cree una entrada en el archivo de configuración Struts para asociar el VIEWNAME creado en el paso 1 con un archivo JSP.
    Por ejemplo, en la versión 9.0.0.x de HCL Commerce:
    
     <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"/>
     
    
    Para la versión 9.0.1 y posteriores, utilice este ejemplo:
    <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>

    La entrada debe utilizar los valores siguientes:

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

    El valor en el atributo "name" es el VIEWNAME utilizado para generar el mensaje que se ha de enviar.

  3. Cree un archivo JSP para generar el mensaje a enviar a la cola de salida. Este nombre de archivo JSP se debe haber especificado cuando se añade una fila al archivo de configuración Struts.
  4. Cree o personalice un mandato (solamente mandato de tarea, si trabaja con la personalización) que utilice la modalidad SendMsgCmd.sendReceiveImmediate() y el ID de tipo de mensaje creado en el paso 1. Esto se utiliza para llamar a la interfaz SendMsgCmd.
  5. Utilice la Consola de administración para asegurarte de que el transporte asignado al servicio SendReceiveImmediate esté activo, como por ejemplo el adaptador de IBM MQ.
  6. Utilice la Consola de administración para definir cada tipo de mensaje que ha creado en el paso 1. En el campo Modalidad especifique 1. Esto indica una modalidad de SendReceiveImmediate de comunicación.

Resultados

Después de enviar un mensaje de salida que requiere una respuesta:

  1. HCL Commerce empieza a escuchar un mensaje de respuesta en una cola de destino una vez que se invoca el mandato para enviar el mensaje.
  2. La aplicación de terceros recibe y consume el mensaje y genera un mensaje de respuesta que contiene un ID de correlación que coincide con el ID de mensaje de la petición original. A continuación, coloca el mensaje de respuesta en la cola de destino donde HCL Commerce espera que aparezca.
  3. HCL Commerce encuentra el mensaje que contiene el ID correlacionado que coincide con el ID de mensaje del mensaje de solicitud de salida. A continuación, el mandato procesa la carga útil del mensaje de respuesta.