There are a set of checks that you can carry out to investigate
why point-to-point messages are not arriving at a destination on a
service integration bus.
Before you begin
Complete the following preliminary checks before starting
the investigation:
- Check that the producing application is producing messages correctly:
- Check that there are no failures in the application.
- Check that the name of the destination is correct.
- Check that the transaction used to produce the message was committed
without any exceptions.
- Check that the application is allowing sufficient
time for messages to be delivered; messages are transmitted asynchronously
between messaging engines, so if the messages are being routed through
a remote message point there may be a slight delay before they are
delivered. The length of the delay is dependent upon factors such
as system capacity and loading.
- Check the producing application to see if it is giving the messages
a short expiry time. If this is the case, the messages might be expiring
before they arrive, or before they can be processed by the receiving
messaging engine.
- Examine the relevant exception destination to see if the messages
appear there. If they do, use the information contained within the
messages to understand why they have arrived at the exception destination,
and write an application (or mediation) to process the messages.
- Check the reliability of the messages. If the reliability is set
to best effort, the messages can be discarded by the system during
normal operation. See Understanding why best effort nonpersistent messages are being discarded for
a list of possible causes.
- Check the priority of the messages. If the priority is low, higher
priority work might be delaying the messages.
- Check the system environment, for example, a busy CPU might cause
delayed messages.
- Examine the error logs for exceptions.
About this task
If you have an application that is producing point-to-point
messages in a service integration system, and the messages are not
arriving at their destination, investigate the problem by completing
the following steps:
Procedure
- Click Service integration -> Buses -> bus_name -> [Destination
resources] Destinations to display the destinations on the
relevant bus. Click on the destination and ensure that the Send
allowed check box is selected.
- Stop the consuming application. Clear the Receive
allowed check box for the destination and save the changes
to the master repository. If you do not have dynamic configuration
enabled, restart the messaging engine for the changes to take effect.
This will prevent any consumers from consuming the test message that
you will use to investigate the problem.
- Run the producing application to produce a test message
with a reliability level greater than best effort (best effort messages
can be discarded during normal operation so are not useful for investigating
this problem). The following steps describe how to investigate what
happens to the test message.
- Determine which messaging engine hosts the queue point
for the destination to which the messages are being sent, see Determining the location of message points for a destination on a service integration bus.
- Click Service integration -> Buses -> bus_name -> [Topology] Messaging
engines and check that the messaging engine is running.
- From the messaging engine panel click [Message points] Queue
points ->queue_point_name [Runtime tab] Messages to
view the messages on the queue point. If the message is displayed,
it arrived successfully at the messaging engine and the problem has
cleared.
- Determine which messaging engine the producing application
is connected to, see Determining which messaging engine an application is connected to.
- If the producing application is connected to a messaging
engine other than the messaging engine hosting the queue point, the
messages are being routed through a remote message point. Refer to Investigating why point-to-point messages are not arriving through a remote message point to
investigate this scenario.