Websphere 7 SIB Queue: как получить доступ к глубине очереди из Java? - PullRequest
0 голосов
/ 16 ноября 2011

Я создал некоторый код для доступа к глубинам очереди для Websphere MQ, но я не могу понять, есть ли API для доступа к очереди SIB или я могу настроить websphere, чтобы разрешить мне доступ к ней.

Кто-нибудь может дать мне несколько советов / идей?

Спасибо, Джефф Портер

1 Ответ

1 голос
/ 18 ноября 2011

Ответ, для тех, кто заботится о SOAP.

Хорошо, поэтому мне не удалось заставить работать API, используемый WSADMIN, но я использовал SOAP напрямую в веб-сферу, чтобы спросить его об очередях.

Примечание. Порт по умолчанию: 8880

.
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;

import javax.management.ObjectName;

import org.apache.log4j.Logger;

import com.ibm.websphere.management.AdminClient;
import com.ibm.websphere.management.AdminClientFactory;

 <SNIP>
 Properties connectProps = new Properties();
 connectProps.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
 connectProps.setProperty(AdminClient.CONNECTOR_HOST, "127.0.0.1");
 connectProps.setProperty(AdminClient.CONNECTOR_PORT, "8880"); 

 AdminClient adminClient = null;
    try
    {
      adminClient = AdminClientFactory.createAdminClient(connectProps);

      Set<ObjectName> s2 = adminClient.queryNames(new ObjectName("WebSphere:*"), null);
      if (!s2.isEmpty())
      {
        Iterator<ObjectName> i = s2.iterator();
        while (i.hasNext())
        {
          ObjectName on = i.next();
          String type = on.getKeyProperty("type");
          if ("SIBQueuePoint".equals(type))
          {
            String queueName = on.getKeyProperty("name") ;
            int currentDepth =  ((Integer) adminClient.getAttribute(on, "depth")).intValue();
            int maxSize =  ((Integer) adminClient.getAttribute(on, "highMessageThreshold")).intValue();

            LOG.info("Queried SIB queue: Queue: [" + queueName + "] Size =[" + currentDepth + "] highMessageThreshold:["+maxSize+"]");
          }
        }
      }
      else {
        System.out.println("MBean was not found");
      }
    }
    catch (Exception e)
    {
      LOG.error("Error finding SIB queue details, message:" + e.getMessage(), e); 
    }  
...