T.Rob,
I always enjoy our discussions and I like to think that they help to illuminate some of the intricacies of MQ for others. The link that you provide in your post is to your excellent description of the issue with the runmqsc command. I think that we both believe that the Maximum Queue Depth setting for the queue in question is unfortunate. I would expect to see from the Lab some combination of modifying the Max Queue Depth, message persistence, and message expiry for the processes involved. There are multiple tuning options to resolve this issue. Personally, I would be more comfortable with a much higher queue depth and a relatively short expiry period (e.g 5 minutes).
It's hard for developers to get these kinds of settings right the first time. The neither have the laboratory facilities to test large volumes nor the operational experience to have those lessons ground in deep. Unless you've worked in an Enterprise with 1,000s of Queue Managers you simply haven't had the hands-on opportunity to learn those lessons. If the developers have perfect foresight, they can anticipate these issues. Unfortunately, they don't have the facilities to test them even if they do anticipate them. That's why we have Alpha and Beta releases.
Now, back to the point of my post. Any configuration which is the MQ administrator's responsibility and which has to potential to break a production environment is "dangerous". You know me, I like to be provocative to get people thinking. It's not that the setting itself is dangerous, it's that not respecting the setting, or not being aware of the setting, or not managing the environment so that the setting doesn't take down production are dangerous. It's also dangerous to not pay attention to x.509 certificate expiry dates. Those two things will both bring down a Production environment. Actually, in my experience, certificate expiry and maximum queue depth are probably the two most common causes of preventable production outages.
A final note on this particular queue attribute. It has be seen and discussed as either being useful for disk space management or for queue monitoring. From a storage system point of view, on distributed MQ platforms there is no difference between a file and a queue. How many UNIX or Windows OS versions manage file space usage by limiting the number of records? One terrabyte length record would run most files and queues out of space.
How about Queue monitoring. Min and Max depth monitoring has been problematic since day one of MQ. For a long time, despite its being a crude tool, it was all we had for monitoring. We now have much better statistics to use to determine if applications are reading or writing messages from/to a queue. This attribute is a hold-over from the days when MQ was a young product. As engineers, administrators need to be aware of both the potential benefits as well as the potential costs of these parameters. My post was a call to pay Attention!
In the end, you and I probably see 95% eye to eye on almost all of the MQ issues that we discuss and just differ in either personal style or in the implementation trade-offs that we choose to accept. In the case of this attribute, I do the following:
- Set all queues to have max depth. This includes the System queues. This is built into my "Golden Queue Manager" script and run against all Queue Managers.
- Set monitoring alerts for all queue depths over 5,000 messages. These alert values are initial values for the alerts and, like all alerts, need ongoing tuning.
- Monitor system disk space for both queues and logs.
There are, of course, other ways to achieve the same results. I always try to separate out style from substance. It's never about doing things "Glen's" way. It's about keeping Production as stable, resilient, and reliable as possible. Multiple approaches can get an environment to the same place. Different shops have different constraints based upon personnel, tools, support, etc. I just want, as do you, administrators to know their choices and to make wise decisions.
I don't feel that I have anything further to say regarding Maximum Queue Depth, but if I have missed something please feel free to add a final comment.
As always my esteemed colleague, your friend,
Glen