IBM MQ 消息限制

0 mq ibm-mq

我们正在使用 IBM MQ,我们在控制其向接收者的异步传递方面面临一些严重的问题。数以百万计,而服务器机器没有那么多的容量来一次处理这么多线程,那么有没有办法像在 IBM MQ 端进行节流一样,我们可以像 Apache MQ 那样配置预蚀刻限制?

或者有没有其他方法可以实现这一目标?

当前,当侦听器上达到某些 X 限制时,我们正在关闭与 IBM MQ 的连接,但这似乎不是一种有效的方式。

请大家帮我们解决这个问题。

Chr*_*isC 5

通常,对于像 MQ 这样的消息队列技术,队列的重点是发送方与接收方解耦。如果您在处理消息量方面遇到问题,那么答案是让它们在接收方队列中排队并尽可能地处理它们,而不是限制发送方。

显而易见的答案是限制您的听众可以占用的最大线程数。我假设您正在使用某种 MQ 线程池?您正在使用什么平台提供无限的侦听器线程?

从您的描述来看,几乎听起来您有一些进程正在运行 - 一旦它检测到队列中的消息 - 它就会读取消息,启动一个新线程并返回并再次查看队列。这是错误的方法。

您应该运行定义数量的进程线程(从一个开始,并根据需要扩展,并且在您的服务器的限制范围内),这些线程本身从队列中读取。如果您获得 MQRC 2033(队列中没有消息),它们将每个都以共享模式打开队列,并且要么等待,要么立即获取睡眠。

希望有帮助。