JMS Binding Type("BT") not receiving pending messages from the TIBCO Enterprise Message Service("EMS") queue.

JMS Binding Type("BT") not receiving pending messages from the TIBCO Enterprise Message Service("EMS") queue.

book

Article ID: KB0090394

calendar_today

Updated On:

Products Versions
TIBCO ActiveMatrix Service Grid -
TIBCO ActiveMatrix BusinessWorks Service Engine -
Not Applicable -

Description

Description:
There are pending messages in the EMS queue and JMS-BT is not consuming this messages for services with JMS binding. The EMS queue is showing connections to the JMS binding.
Symptoms:
JMS-BT is not consuming messages for services with JMS binding. From the EMS queue it can be seen that the connection is established to the JMS binding.
Cause:

A possible cause is that pending messages in the queue do not contain the following property.


'Properties={scaOperationName={String:<operation-name>} )'


There is an enhancement request(BJMS-749) filed for JMS-BT to be able to receive a message even when an incoming message does not have the "SCAOperationName" property configured.


Issue/Introduction

JMS Binding Type("BT") not receiving pending messages from the TIBCO Enterprise Message Service("EMS") queue.

Resolution

The enhancement request BJMS-749 is already fixed with options to handle this scenario in TIBCO ActiveMatrix 3.2 and later versions. For the TIBCO ActiveMatrix 3.1.x setup, to resolve this issue, follow these steps:

To Analyse the issue, perform the following steps.


1). Collect the pending messages in the queue.  Note: There are sample files available in the EMS installation folder (ems/<version>/samples/java) to get messages in a queue. 

     Modify tibjmsMsgConsumer.java to set ACKNOWLEDGE_mode to CLIENT_ACKNOWLEDGE and run this application to check the messages without consuming them. 

2). Check to see if the collected message contains the following property for JMS:

 

    Properties={scaOperationName={String:<operation-name>} )

If the above property is missing then JMS -BT will not receive messages as in the multiple operation scenario. The JMS property scaoperationname needs to be used to sort incoming messages to comply with the SCA specification. This could be the cause for messages pending in the queue though there is a consumer for the queue.

=========================================================

Example for an Incorrect message format:


Received message: TextMessage={ Header={ JMSMessageID={ID:VMSCAEMS02.29C512FBFD7498C:3655} JMSDestination={Queue[INTEL.ISSUESRC.SPEED.ESBISSUE.GETEIID.IN]} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={true} JMSCorrelationID={9c8e990d-a7f8-1ed2-a888-ff603186973a} JMSType={null} JMSTimestamp={Mon Apr 08 05:29:52 PDT 2013} JMSExpiration={0} JMSPriority={4} } Properties={ JMSXDeliveryCount={Integer:6} } Text=...

Correct Message Format:


Received message: TextMessage={ Header={ JMSMessageID={ID:EMS-SERVER.8710515BA882805:4} JMSDestination={Queue[logger.queue]} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={false} JMSCorrelationID={null} JMSType={null} JMSTimestamp={Tue Apr 09 11:04:56 PDT 2013} JMSExpiration={0} JMSPriority={4} } Properties={scaOperationName={String:getIssueID} } Text=...

============================

To resolve, modify the client side code to include the property value for the operation name and invoke the service with the modified message.


Additional Information

BJMS-749