ibm-mq

IBM MQ: Sender Channel Keeps Retrying Due to Full Subscription Queue


I have a setup where messages are sent from one MQ manager (production) to another (test). On the sender side, I created a Remote Queue that points to an Alias Queue on the receiver side. This Alias Queue redirects messages to a topic, allowing distribution on the test side.

However, an issue arises when one of the subscriptions is inactive. If the queue associated with that subscription reaches its Max Queue Depth, all other subscriptions stop receiving messages. When I check the channel status on the sender side, it shows a retrying state. It seems that if a message cannot be delivered to any of the subscriptions on the receiving side, the sender channel continuously retries.

Any help would be appreciated.


Solution

  • It is entirely up to you what the behaviour is when a subscriber queue is full. You have several options.

    I'm assuming that your messages are persistent given that the channel is unlikely to care about non-persistent messages, but for completeness be aware that there are actually two options on the topic, PMSGDLV (for delivery configuration of persistent messages) and NPMSGDLV (for delivery configuration of non-persistent messages).

    To set these using MQ Explorer instead of MQSC, note that the Topic properties Non-persistent message delivery and Persistent message delivery are the equivalents and can be set to the value To all available subscribers to give the same behaviours as ALLAVAIL. These properties are in the General section of a topic.

    enter image description here

    I'm also assuming that your subscriptions are durable since if the application is not active and the subscription is still collecting messages that sounds like a durable one. For completeness, be aware that the values you can use in both PMSGDLV and NPMSGDLV attributes are:-