public static AMQQueue createAMQQueueImpl(QueueConfiguration config, VirtualHost host)
      throws AMQException {
    String queueName = config.getName();

    boolean durable = config.getDurable();
    boolean autodelete = config.getAutoDelete();
    boolean exclusive = config.getExclusive();
    String owner = config.getOwner();
    Map<String, Object> arguments = null;
    if (config.isLVQ() || config.getLVQKey() != null) {

      arguments = new HashMap<String, Object>();
      arguments.put(QPID_LAST_VALUE_QUEUE, 1);
      arguments.put(
          QPID_LAST_VALUE_QUEUE_KEY,
          config.getLVQKey() == null ? QPID_LVQ_KEY : config.getLVQKey());
    } else {
      boolean priority = config.getPriority();
      int priorities = config.getPriorities();
      if (priority || priorities > 0) {
        arguments = new HashMap<String, Object>();
        if (priorities < 0) {
          priorities = 10;
        }
        arguments.put("x-qpid-priorities", priorities);
      }
    }

    AMQQueue q =
        createAMQQueueImpl(queueName, durable, owner, autodelete, exclusive, host, arguments);
    q.configure(config);
    return q;
  }
 public void setPropertyValue(AMQQueue queue, long value) {
   queue.setFlowResumeCapacity(value);
 }
 public void setPropertyValue(AMQQueue queue, long value) {
   queue.setMinimumAlertRepeatGap(value);
 }
 public void setPropertyValue(AMQQueue queue, long value) {
   queue.setMaximumMessageCount(value);
 }
  public static AMQQueue createAMQQueueImpl(
      String queueName,
      boolean durable,
      String owner,
      boolean autoDelete,
      boolean exclusive,
      VirtualHost virtualHost,
      Map<String, Object> arguments)
      throws AMQSecurityException {
    // Access check
    if (!virtualHost
        .getSecurityManager()
        .authoriseCreateQueue(
            autoDelete, durable, exclusive, null, null, new AMQShortString(queueName), owner)) {
      String description = "Permission denied: queue-name '" + queueName + "'";
      throw new AMQSecurityException(description);
    }

    int priorities = 1;
    String conflationKey = null;
    if (arguments != null) {
      if (arguments.containsKey(QPID_LAST_VALUE_QUEUE)
          || arguments.containsKey(QPID_LAST_VALUE_QUEUE_KEY)) {
        conflationKey = (String) arguments.get(QPID_LAST_VALUE_QUEUE_KEY);
        if (conflationKey == null) {
          conflationKey = QPID_LVQ_KEY;
        }
      } else if (arguments.containsKey(X_QPID_PRIORITIES.toString())) {
        Object prioritiesObj = arguments.get(X_QPID_PRIORITIES.toString());
        if (prioritiesObj instanceof Number) {
          priorities = ((Number) prioritiesObj).intValue();
        }
      }
    }

    AMQQueue q;
    if (conflationKey != null) {
      q =
          new ConflationQueue(
              queueName,
              durable,
              owner,
              autoDelete,
              exclusive,
              virtualHost,
              arguments,
              conflationKey);
    } else if (priorities > 1) {
      q =
          new AMQPriorityQueue(
              queueName, durable, owner, autoDelete, exclusive, virtualHost, priorities, arguments);
    } else {
      q =
          new SimpleAMQQueue(
              queueName, durable, owner, autoDelete, exclusive, virtualHost, arguments);
    }

    // Register the new queue
    virtualHost.getQueueRegistry().registerQueue(q);
    q.configure(virtualHost.getConfiguration().getQueueConfiguration(queueName));

    if (arguments != null) {
      for (QueueProperty p : DECLAREABLE_PROPERTIES) {
        if (arguments.containsKey(p.getArgumentName().toString())) {
          p.setPropertyValue(q, arguments.get(p.getArgumentName().toString()));
        }
      }
    }

    return q;
  }