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 figure 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. In
the figure, a bus contains three messaging engines, ME1, ME2 and ME3.
The producing application is connected to ME1 and the consuming application
is connected to ME3. The messages are produced to ME1 and are routed
from ME1 to ME3 through ME2. In this scenario, we are interested only
in ME1 and ME2. ME1 hosts a remote message point which represents
the message point hosted by ME2. 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.