Пример #1
0
  @Override
  public String getFilter() {
    checkStarted();

    clearIO();
    try {
      Filter filter = queue.getFilter();

      return filter != null ? filter.getFilterString().toString() : null;
    } finally {
      blockOnIO();
    }
  }
 private boolean checkBindingExists(DestinationAction command, String filter) {
   String bindingKey = command.getName();
   if (isJms(command)) {
     if (isTopic(command)) {
       bindingKey = "jms.topic." + bindingKey;
     } else {
       bindingKey = "jms.queue." + bindingKey;
     }
   }
   Map<SimpleString, Binding> bindings = server.getPostOffice().getAllBindings();
   System.out.println("bindings: " + bindings);
   Binding binding = bindings.get(new SimpleString(bindingKey));
   System.out.println("got binding: " + binding);
   if (binding == null) {
     System.out.println("No bindings for " + bindingKey);
     return false;
   }
   if (filter != null) {
     Filter bindingFilter = binding.getFilter();
     assertNotNull(bindingFilter);
     assertEquals(filter, bindingFilter.getFilterString().toString());
   }
   return true;
 }
  @Override
  public void initQueues(
      Map<Long, QueueBindingInfo> queueBindingInfosMap, List<QueueBindingInfo> queueBindingInfos)
      throws Exception {
    int duplicateID = 0;
    for (QueueBindingInfo queueBindingInfo : queueBindingInfos) {
      queueBindingInfosMap.put(queueBindingInfo.getId(), queueBindingInfo);

      Filter filter = FilterImpl.createFilter(queueBindingInfo.getFilterString());

      boolean isTopicIdentification =
          filter != null
              && filter.getFilterString() != null
              && filter
                  .getFilterString()
                  .toString()
                  .equals(ActiveMQServerImpl.GENERIC_IGNORED_FILTER);

      if (postOffice.getBinding(queueBindingInfo.getQueueName()) != null) {

        if (isTopicIdentification) {
          long tx = storageManager.generateID();
          storageManager.deleteQueueBinding(tx, queueBindingInfo.getId());
          storageManager.commitBindings(tx);
          continue;
        } else {

          SimpleString newName = queueBindingInfo.getQueueName().concat("-" + (duplicateID++));
          ActiveMQServerLogger.LOGGER.queueDuplicatedRenaming(
              queueBindingInfo.getQueueName().toString(), newName.toString());
          queueBindingInfo.replaceQueueName(newName);
        }
      }

      PageSubscription subscription = null;

      if (!isTopicIdentification) {
        subscription =
            pagingManager
                .getPageStore(queueBindingInfo.getAddress())
                .getCursorProvider()
                .createSubscription(queueBindingInfo.getId(), filter, true);
      }

      Queue queue =
          queueFactory.createQueue(
              queueBindingInfo.getId(),
              queueBindingInfo.getAddress(),
              queueBindingInfo.getQueueName(),
              filter,
              subscription,
              queueBindingInfo.getUser(),
              true,
              false,
              queueBindingInfo.isAutoCreated());

      if (queueBindingInfo.isAutoCreated()) {
        queue.setConsumersRefCount(
            new AutoCreatedQueueManagerImpl(
                ((PostOfficeImpl) postOffice).getServer().getJMSQueueDeleter(),
                queueBindingInfo.getQueueName()));
      }

      Binding binding =
          new LocalQueueBinding(queueBindingInfo.getAddress(), queue, nodeManager.getNodeId());

      queues.put(queueBindingInfo.getId(), queue);

      postOffice.addBinding(binding);

      managementService.registerAddress(queueBindingInfo.getAddress());
      managementService.registerQueue(queue, queueBindingInfo.getAddress(), storageManager);
    }
  }