This topic describes how to investigate why point-to-point messages
are not being consumed from a destination on a service integration bus.
Why and when to perform this task
Use this topic if you did not get a response in your application
because a message you were expecting did not appear on a queue. The information
in this topic applies to local and remote producers, and local and remote
consumers.
Perform the following preliminary checks before starting
the investigation:
- Perform the following preliminary checks before starting the investigation:
- Check that the consuming application is consuming messages correctly:
- Check that the application is started.
- Check that the name of the destination being consumed from is correct.
- Check the producing application to see if it is giving the messages a
short expiry time. If this is the case, the messages may be expiring before
they can be consumed.
- Click Service integration -> Buses -> bus_name -> [Destination
resources] Destinations to display the destinations on the relevant
bus. Click on the destination and check that the Receive allowed check
box is selected.
- 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 messages are being discarded for
a list of possible causes.
- Examine the error logs.
Steps for this task
- Run the consuming application and check that messages are still
not being consumed.
- Stop the consuming application.
- Determine which messaging engine is hosting the queue point to
which messages are being produced. See Determining the location of message points for a destination on a service integration bus.
- Click -> server_name -> Messaging
engines -> messaging_engine_name -> [Message points] Queue
points -> queue_point_identifier -> [Runtime tab] Messages to
view the messages on the queue point. Check that there are messages present
that are in the 'Unlocked' state.
- If there are no messages present, then there are no messages to consume.
Run the producing application to produce a test message and check the queue
again. If there are still no messages present, the test message has not arrived.
Use the topic Investigating why point-to-point messages are not arriving to
investigate the problem.
- If there are messages present but they are not in the 'Unlocked' state,
check for other consumers that are consuming from this queue point. If there
are other consumers, stop them and repeat the investigation.
- Determine which messaging engine the consuming application is connected
to. See Determining which messaging engine an application is connected to.
- If the consuming application is connected to the messaging engine hosting
the queue point, check the consuming application for errors, in particular
check that the selector in the consuming application matches the available
message.
![[Version 6.0.2]](../was602.gif)
If the consuming 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. Display the runtime properties
of the messaging engine that the consuming application is connected to, then
display the remote message points for that messaging engine and view the list
of message requests on the relevant message point.
If
possible, start the consuming application and ensure that it is actively trying
to consume a message (the application should be in either a 'receive with
wait' state or an 'asynchronous consumer registered' state), then follow the
instructions in Investigating why messages are not being consumed via a remote message point or subscription point, while the application is running.
If your application cannot remain in an actively consuming state for a significant
length of time (long enough to investigate the problem), follow the steps
in Investigating why messages are not being consumed via a remote message point or subscription point, while the application is stopped.