IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
Expand all | Collapse all

Transacted JMS Trigger [ XA Transaction ]

  • 1.  Transacted JMS Trigger [ XA Transaction ]

    Posted Fri January 06, 2023 04:47 AM

    Product : Integration server 10.11 Core Fix 1
    component : JMS Trigger with Solace

    We are trying to implement Transacted JMS Trigger [ XA Transaction ] with Solace Event Broker. Since we are using Transacted JMS we do not have parameter to set the the retry limit and time between the retry as we have for non transacted JMS

    Non Transacted Properties :
    Max retry attempt
    Retry Interval **
    On Retry failure

    Transacted JMS Trigger Properties :

    On Transaction Roll back : suspend and recover

    Hence we are relaying on the below as per the webMethods JMS developer Guide to use the below are the run time parameter of server :

    **watt.server.jms.trigger.maxDeliveryCount 5 **
    watt.server.jms.connection.retryPeriod 60

    We trying to mock the trigger service to failure with throw transient error by mocking endpoint [ com.wm.app.b2b.server.ISRuntimeException ]. But maxDeliverycount or retryPeriod is not honoring and service goes into closed circuit and keep processing .

    Any thought/ suggestion welcomed


    #Flow-and-Java-services
    #webMethods
    #Integration-Server-and-ESB


  • 2.  RE: Transacted JMS Trigger [ XA Transaction ]

    Posted Mon January 16, 2023 03:27 AM

    Dear @DINESH_J

    From the documentation - The “watt.server.jms.trigger.maxDeliveryCount” property specifies the maximum number of times the JMS provider can deliver a message to Integration Server. The default is 100. Integration Server enforces a maximum delivery count, which determines the maximum number of time the JMS provider can deliver the message to the JMS trigger.If the maximum delivery count has been met, the JMS provider will not deliver the message to the JMS trigger. Instead, the JMS provider will acknowledge and remove the message. The maximum delivery count is controlled by the watt.server.jms.trigger.maxDeliveryCount property.

    I believe this property signifies the maximum number of times any message can be redelivered to the trigger.

    From the documentation (transacted JMS trigger) - Because a transaction is an all or nothing situation, a trigger service cannot retry a message if a trigger service ends because of a transient error. Designer does not display the retry properties (Max retry attempts, Retry interval, and On retry failure) for a transacted JMS trigger.

    I would suggest, if you really do not have an XA Transaction requirement, go ahead with a Non-Transacted JMS trigger. XA Transactions should be considers only when you need to handle a transaction spawning different resources (eg: JMS with JDBC ) . If you are working with only one JMS provider then Non-Transacted JMS trigger can provide you with “Retry” with “Message Recovery”

    Trigger-Retry

    On the trigger set as follows for “Transient Error handling
    Max retry attempt - 2
    Retry Interval - 10 seconds
    On Retry failure - Suspend and retry later

    The logs of the trigger shows reattempts and the message is rollbacked to the JMS provider

    2023-01-16 12:10:59 GST [ISS.0134.0066I] JMS trigger MY_Sample_Flow.solaceMessaging:NoTXSolaceReceiveJMSMessage has started 
    2023-01-16 12:11:00 GST [ISP.0090.0003C] ****Attempting to read message  0 times***  
    2023-01-16 12:11:00 GST [ISP.0090.0003C] *****Catch Block is executed on  Error - **** %jsonString% 
    2023-01-16 12:11:11 GST [ISP.0090.0003C] ****Attempting to read message  1 times***  
    2023-01-16 12:11:11 GST [ISP.0090.0003C] *****Catch Block is executed on  Error - **** %jsonString% 
    2023-01-16 12:11:22 GST [ISP.0090.0003C] ****Attempting to read message  2 times***  
    2023-01-16 12:11:22 GST [ISP.0090.0003C] *****Catch Block is executed on  Error - **** %jsonString% 
    2023-01-16 12:11:22 GST [ISS.0134.0042E] JMS Trigger MY_Sample_Flow.solaceMessaging:NoTXSolaceReceiveJMSMessage failed: com.wm.app.b2b.server.ISRuntimeException: *******Throwing a retry Exception**** 
    2023-01-16 12:11:22 GST [ISS.0134.0068I] JMS trigger MY_Sample_Flow.solaceMessaging:NoTXSolaceReceiveJMSMessage has been suspended 
    2023-01-16 12:11:22 GST [ISS.0134.0046E] JMS Trigger MY_Sample_Flow.solaceMessaging:NoTXSolaceReceiveJMSMessage **has recovered the message(s)**. 
    

    Let me know if this helps.

    Best Regards,
    Franklin


    #Flow-and-Java-services
    #webMethods
    #Integration-Server-and-ESB