This topic describes how to investigate why publish/subscribe messages
are not arriving at a subscription on a service integration bus.
Use this topic if you have an application that is producing messages
to a topic space destination, and a consuming application is not receiving
the messages.
Perform 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 actually 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's topic and selector are correct. To do this
click Service integration -> Buses -> bus_name -> [Destination
resources] Destinations -> topic_space_name -> [Message points] Publication
points -> publication_point_identifier -> 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 may 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 messages are being discarded for
a list of possible causes.
- Examine the error logs for exceptions.
- 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 your subscription. If your 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 via a remote publication point. Refer to Investigating why publish/subscribe messages are not being received by a subscription via a remote message point to
investigate this scenario.