Investigating why publish/subscribe messages are not arriving at a subscription
There are a set of checks that we can carry out to investigate why publish/subscribe messages are not arriving at a subscription 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 or runtime errors from the application.
- Check that the name of the destination is correct.
- Check that messages are being produced.
- Check that the transaction used to produce the message was committed without any exceptions.
- Check that the consuming application is consuming messages correctly:
- Check that the application is started.
- Check that the subscription topic and selector are correct. Click Service integration -> Buses -> bus_name -> [Destination resources] Destinations -> topic_space_name -> [Message points] Publication points -> publication_point_name -> Runtime -> Subscriptions -> subscription_name and ensure that the Topic and Selector fields match the topic and selector specified in the application.
- If security is enabled, ensure that the subscription has the authority to receive messages sent to it. Refer to Topic security and Messaging security for more information.
- 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 disappearing before they arrive, or before they can be processed by the receiving messaging engine.
- Click Service integration -> Buses -> bus_name -> [Destination resources] Destinations to display the destinations on the relevant bus. Click on the topic space and check that the Send allowed and Receive allowed check boxes are selected.
- 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.
- Examine the error logs for exceptions.
Complete the following checks if we have an application that is producing messages to a topic space destination, and a consuming application is not receiving the messages.
Tasks
- Click Service integration -> Buses -> bus_name -> [Destination resources] Destinations to display the destinations on the relevant bus. Click on the relevant topic space and under Message points, click Publication points. For each publication point listed, click the publication point then click Runtime >Subscriptions and look for our subscription. If our subscription is not listed on any of the publication points, there is an error in the consuming application.
- Determine which messaging engines the producing and consuming applications are connected to. See Determining which messaging engine an application is connected to.
- If the producing application is connected to the same messaging engine as the consuming application, the messages are being produced locally to the consumer. Recheck the producing and consuming applications, and check the system logs for errors.
- If the producing application is connected to a different messaging engine than the consuming application, the messages are being routed through a remote publication point. Refer to Investigating why publish/subscribe messages are not being received by a subscription through a remote message point to investigate this scenario.
Subtopics
- Determining which messaging engine an application is connected to
If the application fails to receive or produce a message, we might want to find out which messaging engine it is connected to, as part of troubleshooting the problem.- Investigating why publish/subscribe messages are not being received by a subscription through a remote message point
There are a set of checks that we can carry out to investigate why publish/subscribe messages are not being received by a subscription on a service integration bus, when the messages are being routed through a remote message point.