【问题标题】:Check MQ queue depth检查 MQ 队列深度
【发布时间】:2012-01-29 04:27:37
【问题描述】:

任何人都可以帮助在 java 中编写获取队列深度的代码。我们在 IBM WebSphere MQ 中有 4 个队列,其中有消息。

我想编写一个 jsp 来在运行报告时读取队列名称及其深度。 我该怎么做?

【问题讨论】:

    标签: java ibm-mq


    【解决方案1】:

    我看到回复access queue with Websphere MQ API

    您是否查看过 JMX 上下文中的 MBean 可访问性?如果我必须这样做,我会在 Mbean 中公开它。

    你可以在那里看到IBM JMS Topologies

    对于监控和检查资源的状态,例如队列深度,有几个选项。首选选项是使用 Application Serve 提供的 JMX Mbean 进行监视:JMSBasicFunction、JMSAdministration 和 EmbeddedJMSAdministration。 您可以通过 wsadmin 或以编程方式访问这些 Mbean。其次,您可以使用传统的 WMQ 管理实用程序(例如 runmqsc 或 MQExplorer)来查看队列和其他资源。如果您确实使用这些实用程序,那么您必须不对 Application Server 队列管理器和队列进行任何配置更改。这些资源在 Application Server 的控制之下。使用 MQ 实用程序更改这些资源会导致配置无效

    不知道您是否在 WAS 服务器上以及这是否仍然是相同的 MBean,但您应该在您的 AS 上找到等效的 Mbean。

    【讨论】:

      【解决方案2】:

      http://blog.guymahieu.com/2008/06/11/getting-the-depth-of-an-mqseries-queue-from-java/

      我重新实现了如下:

      import com.ibm.mq.*;
      
      public class QueueManager {
      
          private final String host;
          private final int port;
          private final String channel;
          private final String manager;
          private final MQQueueManager qmgr;
      
          public QueueManager(String host, int port, String channel, String manager) throws MQException {
              this.host = host;
              this.port = port;
              this.channel = channel;
              this.manager = manager;
              this.qmgr = createQueueManager();
          }
      
          public int depthOf(String queueName) throws MQException {
              MQQueue queue = qmgr.accessQueue(queueName, MQC.MQOO_INQUIRE | MQC.MQOO_INPUT_AS_Q_DEF, null, null, null);
              return queue.getCurrentDepth();
          }
      
          @SuppressWarnings("unchecked")
          private MQQueueManager createQueueManager() throws MQException {
              MQEnvironment.channel = channel;
              MQEnvironment.port = port;
              MQEnvironment.hostname = host;
              MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);
              return new MQQueueManager(manager);
          }
      }
      

      将以下 jars 放在你的类路径中:

      • com.ibm.mq*jar
      • j2ee.jar

      【讨论】:

      • 放置在路径中的特定 jar 不受支持且特定于版本。在 V8 之前,如果您想要为您的客户端提供支持,IBM 需要完整的客户端安装。从 v8.0 开始,IBM 有一个仅支持 jar 的客户端配置,但这不是它的正确 jar 列表。
      • 这有帮助,我只需要将传输模式更改为绑定。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多