This topic describes how to investigate why point-to-point messages
are not arriving at a destination on a service integration bus, when the messages
are being routed through a remote message point.
About this task
You should perform this task as part of
Investigating why point-to-point messages are not arriving.
This task explains how to investigate the flow of messages in a point-to-point
messaging scenario where the messages are being routed through a remote message
point. The following diagram illustrates the situation. ME1 is the messaging
engine that the producing application is attached to, and ME2 is the messaging
engine that is hosting the queue point. These messaging engines are referred
to in the following steps.
Figure 1. Point-to-point message production using
a remote message point
Procedure
- Display the properties for ME1 by clicking -> bus_name -> [Topology] Messaging
engines -> messaging_engine_name.
- On the Runtime tab for ME1, click [Remote
message points]Remote queue points, then click the
remote queue point that represents the queue point on ME2. Review the value
of the Current outbound messages field.
- If the number of current outbound messages is greater than zero,
messages have been produced but they might not have been received by ME2.
- Check that the two messaging engines can
communicate with each other, see Service integration troubleshooting: Checking the communication between two messaging engines in a bus.
- Look for previous messages on the queue. If there are previous messages,
and some or all of them are for ME2, wait a few moments and then refresh the
view.
- If some of the messages have disappeared from the queue, the system is
currently delivering messages but is backlogged. Wait until the backlog has
been cleared, then inspect the queue point on ME2 to see if the test message
has arrived.
- If none of the messages have disappeared from the queue, the transmission
of messages might be blocked by a message that is trapped in the 'Committing'
state. Later messages must wait for this message to be delivered, otherwise
the ordering of messages will be broken.
If a message is trapped in the
'Committing' state, that message is contained in an unresolved transaction.
A resource manager, such as a database, might have hung. Resolve the issue
with the resource manager. If this fails, note the Transaction
ID of the message and click Servers -> Application servers
-> [Content pane] server_name -> [Runtime tab] [Additional
Properties] Transaction Service to display the general properties for
the transaction service. Use the Review links to resolve
the transaction whose Global ID matches the transaction
ID of the message.
- Examine the state of the test message:
- If the status of the test message is 'Pending send', the message is waiting
to be sent. ME2 might not be accepting messages. Perform the following checks:
- If the status of the test message is 'Pending acknowledgement', the message
has been sent but ME2 has either not received the message, or not processed
the message. Check that there are no messages in the 'Committing' state ahead
of the test message in the transmit queue, then wait a few moments and examine
the queue point again to see if the test message has arrived.If there are
messages that are trapped in the 'Committing' state, resolve this problem
by referring to the following point.
- If the test message (or another message) is in the 'Committing' state,
the message is contained in an unresolved transaction. A resource manager,
such as a database, might have hung. Resolve the issue with the resource manager.
If this fails, note the Transaction ID of the message
and click Servers -> Application servers -> [Content pane] server_name -> [Runtime
tab] [Additional Properties] Transaction Service to display the general
properties for the transaction service. Use the Review links
to resolve the transaction whose Global ID matches
the transaction ID of the message.
- If the number of completed outbound messages is greater than zero,
messages have been produced and processed by ME2, but the test message has
not appeared. Rerun the producing application and ensure that the number of
completed outbound messages on ME1 increases (you might see the active outbound
message count increase before the completed outbound message count increases).
- If the counts do not increase, the message was not produced at ME1. Check
that the producing application is actually connected to this messaging engine
(see Determining which messaging engine an application is connected to).
- If the counts do increase, the message arrived at ME2, but was either
consumed, sent to the exception destination, or expired. Check for the presence
of consumers, and perform the preliminary checks again.
- If the number of current and completed messages are both zero,
check that the producing application really is producing messages to this
destination, by performing the relevant preliminary checks again.
What to do next
If you are still having problems, contact your IBM customer service
representative.