Search in sources :

Example 1 with Queue

use of com.sun.messaging.jmq.jmsserver.core.Queue in project openmq by eclipse-ee4j.

the class GetBrokerPropsHandler method handle.

/**
 * Handle the incomming administration message.
 *
 * @param con The Connection the message came in on.
 * @param cmd_msg The administration message
 * @param cmd_props The properties from the administration message
 */
@Override
public boolean handle(IMQConnection con, Packet cmd_msg, Hashtable cmd_props) {
    int status = Status.OK;
    String emsg = null;
    if (DEBUG) {
        logger.log(Logger.DEBUG, this.getClass().getName() + ": " + cmd_props);
    }
    /*
         * We need to create a copy of the broker configuration because the protocol requires we send a serialized
         * java.util.Properties object. If we just serialize (or clone the serialize) BrokerConfig it will end up being a
         * serialized BrokerConfig object, not a serialized Properties object (even if we cast). So we do this rather expensive
         * operation.
         */
    Properties brokerProps = Globals.getConfig().toProperties();
    /* Add the version properties */
    Version version = Globals.getVersion();
    brokerProps.putAll(version.getProps());
    brokerProps.put(Globals.IMQ + ".system.current_count", String.valueOf(DL.totalCount()));
    brokerProps.put(Globals.IMQ + ".system.current_size", String.valueOf(DL.totalBytes()));
    Queue[] qs = DL.getDMQ(null);
    // PART
    Queue dmq = qs[0];
    brokerProps.put(Globals.IMQ + ".dmq.current_count", String.valueOf(dmq.size()));
    brokerProps.put(Globals.IMQ + ".dmq.current_size", String.valueOf(dmq.byteSize()));
    String val = brokerProps.getProperty(DL.USE_DMQ_STR);
    if (val == null || val.trim().equals("")) {
        brokerProps.put(DL.USE_DMQ_STR, String.valueOf(DL.defaultUseDMQ));
    }
    if (Globals.getBrokerID() != null) {
        brokerProps.put(Globals.IMQ + ".brokerid", Globals.getBrokerID());
    }
    if (Globals.getClusterID() != null) {
        brokerProps.put(Globals.IMQ + ".cluster.clusterid", Globals.getClusterID());
    }
    if (DL.isPartitionMode() && DL.isPartitionMigratable()) {
        brokerProps.put(Globals.IMQ + ".partitionmigratable", "true");
    }
    brokerProps.put(Globals.IMQ + ".embedded", Boolean.toString(Broker.isInProcess()));
    if (Globals.getHAEnabled()) {
        brokerProps.put(ClusterManager.CONFIG_SERVER, "");
    } else if (Globals.useSharedConfigRecord()) {
        String shareccVendor = null;
        try {
            shareccVendor = Globals.getStore().getShareConfigChangeStore().getVendorPropertySetting();
        } catch (BrokerException e) {
            logger.logStack(Logger.WARNING, e.getMessage(), e);
        }
        brokerProps.put(ClusterManager.CONFIG_SERVER, "[" + Globals.NO_MASTERBROKER_PROP + "=" + brokerProps.get(Globals.NO_MASTERBROKER_PROP) + ", " + shareccVendor + "]");
    }
    /**
     * OK, use the cluster object to get active and normal brokers
     */
    ClusterManager cfg = Globals.getClusterManager();
    // calculate url
    String list = null;
    Iterator itr = cfg.getConfigBrokers();
    // OK we want to remove any duplicates
    Set s = new HashSet();
    while (itr.hasNext()) {
        ClusteredBroker cb = (ClusteredBroker) itr.next();
        s.add(cb.getBrokerURL().toString());
    }
    itr = s.iterator();
    while (itr.hasNext()) {
        if (list == null) {
            list = itr.next().toString();
        } else {
            list += "," + itr.next().toString();
        }
    }
    if (list == null) {
        list = "";
    }
    brokerProps.put("imq.cluster.brokerlist", list);
    list = null;
    s = new HashSet();
    itr = cfg.getActiveBrokers();
    while (itr.hasNext()) {
        ClusteredBroker cb = (ClusteredBroker) itr.next();
        s.add(cb.getBrokerURL().toString());
    }
    itr = s.iterator();
    while (itr.hasNext()) {
        if (list == null) {
            list = itr.next().toString();
        } else {
            list += "," + itr.next().toString();
        }
    }
    if (list == null) {
        list = "";
    }
    brokerProps.put("imq.cluster.brokerlist.active", list);
    // Send reply
    Packet reply = new Packet(con.useDirectBuffers());
    reply.setPacketType(PacketType.OBJECT_MESSAGE);
    setProperties(reply, MessageType.GET_BROKER_PROPS_REPLY, status, emsg);
    setBodyObject(reply, brokerProps);
    parent.sendReply(con, cmd_msg, reply);
    return true;
}
Also used : BrokerException(com.sun.messaging.jmq.jmsserver.util.BrokerException) Set(java.util.Set) HashSet(java.util.HashSet) Properties(java.util.Properties) Version(com.sun.messaging.jmq.Version) Iterator(java.util.Iterator) Queue(com.sun.messaging.jmq.jmsserver.core.Queue) HashSet(java.util.HashSet)

Example 2 with Queue

use of com.sun.messaging.jmq.jmsserver.core.Queue in project openmq by eclipse-ee4j.

the class DestinationManagerMonitor method getNumMsgsInDMQ.

public Long getNumMsgsInDMQ() {
    Queue[] qs = DL.getDMQ(null);
    // PART
    Queue dmq = qs[0];
    return (Long.valueOf(dmq.size()));
}
Also used : Queue(com.sun.messaging.jmq.jmsserver.core.Queue)

Example 3 with Queue

use of com.sun.messaging.jmq.jmsserver.core.Queue in project openmq by eclipse-ee4j.

the class DestinationManagerMonitor method getTotalMsgBytesInDMQ.

public Long getTotalMsgBytesInDMQ() {
    Queue[] qs = DL.getDMQ(null);
    // PART
    Queue dmq = qs[0];
    return (Long.valueOf(dmq.byteSize()));
}
Also used : Queue(com.sun.messaging.jmq.jmsserver.core.Queue)

Example 4 with Queue

use of com.sun.messaging.jmq.jmsserver.core.Queue in project openmq by eclipse-ee4j.

the class BrokerConsumers method removeRemoteDeadMessage.

private boolean removeRemoteDeadMessage(int ackType, PacketReference ref, ConsumerUID cuid, ConsumerUID storedid, Map optionalProps) throws BrokerException {
    if (ref == null) {
        return true;
    }
    Destination d = ref.getDestination();
    Queue[] qs = DL.getDMQ(ref.getPartitionedStore());
    if (d == qs[0]) {
        // already gone, ignore
        return true;
    }
    // first pull out properties
    String comment = null;
    Exception ex = null;
    Integer deliverCnt = null;
    Integer reasonInt = null;
    String deadbkr = null;
    if (optionalProps != null) {
        comment = (String) optionalProps.get(DMQ.UNDELIVERED_COMMENT);
        ex = (Exception) optionalProps.get(DMQ.UNDELIVERED_EXCEPTION);
        deliverCnt = (Integer) optionalProps.get(Destination.TEMP_CNT);
        reasonInt = (Integer) optionalProps.get("REASON");
        deadbkr = (String) optionalProps.get(DMQ.DEAD_BROKER);
    }
    RemoveReason rr = null;
    if (ackType == ClusterBroadcast.MSG_UNDELIVERABLE) {
        rr = RemoveReason.UNDELIVERABLE;
    } else {
        rr = RemoveReason.ERROR;
        if (reasonInt != null) {
            rr = RemoveReason.findReason(reasonInt.intValue());
        }
    }
    if (comment == null) {
        comment = "none";
    }
    if (ref.markDead(cuid, storedid, comment, ex, rr, (deliverCnt == null ? 0 : deliverCnt.intValue()), deadbkr)) {
        try {
            if (ref.isDead()) {
                if (getDEBUG()) {
                    Globals.getLogger().log(logger.INFO, "Remove dead message " + ref + " for remote consumer " + cuid + " on destination " + d + " with reason " + rr);
                }
                try {
                    d.removeDeadMessage(ref);
                } catch (Exception e) {
                    logger.log(logger.WARNING, "Unable to remove dead[" + rr + ", " + deadbkr + "] message " + ref + "[" + cuid + "]: " + e.getMessage(), e);
                }
            }
        } finally {
            ref.postAcknowledgedRemoval();
        }
        return true;
    }
    return false;
}
Also used : Destination(com.sun.messaging.jmq.jmsserver.core.Destination) RemoveReason(com.sun.messaging.jmq.jmsserver.util.lists.RemoveReason) Queue(com.sun.messaging.jmq.jmsserver.core.Queue) ConsumerAlreadyAddedException(com.sun.messaging.jmq.jmsserver.util.ConsumerAlreadyAddedException) SelectorFormatException(com.sun.messaging.jmq.util.selector.SelectorFormatException) IOException(java.io.IOException) AckEntryNotFoundException(com.sun.messaging.jmq.jmsserver.util.AckEntryNotFoundException) BrokerException(com.sun.messaging.jmq.jmsserver.util.BrokerException)

Aggregations

Queue (com.sun.messaging.jmq.jmsserver.core.Queue)4 BrokerException (com.sun.messaging.jmq.jmsserver.util.BrokerException)2 Version (com.sun.messaging.jmq.Version)1 Destination (com.sun.messaging.jmq.jmsserver.core.Destination)1 AckEntryNotFoundException (com.sun.messaging.jmq.jmsserver.util.AckEntryNotFoundException)1 ConsumerAlreadyAddedException (com.sun.messaging.jmq.jmsserver.util.ConsumerAlreadyAddedException)1 RemoveReason (com.sun.messaging.jmq.jmsserver.util.lists.RemoveReason)1 SelectorFormatException (com.sun.messaging.jmq.util.selector.SelectorFormatException)1 IOException (java.io.IOException)1 HashSet (java.util.HashSet)1 Iterator (java.util.Iterator)1 Properties (java.util.Properties)1 Set (java.util.Set)1