Investigating why point-to-point messages are not arriving
There are a set of checks that we can carry out to investigate why point-to-point messages are not arriving at a destination on a service integration bus.
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.
If we 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:
Tasks
- 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 we 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 we 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.
Subtopics
- Determining the location of message points for a destination on a service integration bus
When we are investigating a problem, we might have to find where the message points for a destination are located.- Investigating why point-to-point messages are not arriving through a remote message point
There are a set of checks that we can carry out 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.