activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mcacker <mitchell.ackerma...@gmail.com>
Subject EmbeddedJMS doesn't register JMS topics or queues
Date Fri, 16 Sep 2016 18:18:07 GMT
Hi,

I'm in the process of migrating from HornetQ to Artemis and have run into an
issue with EmbeddedJMS.  After processing the configuration file, i'm
expecting the MapBindingRegistry (i'm not using JNDI) to have references to
the configured queues and topics, like it did in HornetQ, but the registry
is empty.

Stepping through the code, that step is now performed if the queue
configuration has a binding specified (from JMSServerManagerImpl):

   protected boolean internalCreateJMSQueue(final boolean storeConfig,
                                            final String queueName,
                                            final String selectorString,
                                            final boolean durable,
                                            final boolean autoCreated,
                                            final String... bindings) throws
Exception {

      if (active && queues.get(queueName) != null) {
         return false;
      }

      runAfterActive(new WrappedRunnable() {
         @Override
         public String toString() {
            return "createQueue for " + queueName;
         }

         @Override
         public void runException() throws Exception {
            checkBindings(bindings);

            if (internalCreateQueue(queueName, selectorString, durable,
autoCreated)) {

               ActiveMQDestination destination = queues.get(queueName);
               if (destination == null) {
                  // sanity check. internalCreateQueue should already have
done this check
                  throw new IllegalArgumentException("Queue does not
exist");
               }

               String[] usedBindings = null;

*               if (bindings != null) {
                  ArrayList<String> bindingsToAdd = new ArrayList<>();

                  for (String bindingsItem : bindings) {
                     if (bindToBindings(bindingsItem, destination)) {
                        bindingsToAdd.add(bindingsItem);
                     }
                  }

                  usedBindings = bindingsToAdd.toArray(new
String[bindingsToAdd.size()]);
                  addToBindings(queueBindings, queueName, usedBindings);
               }
*
               if (storeConfig && durable) {
                  storage.storeDestination(new
PersistedDestination(PersistedType.Queue, queueName, selectorString,
durable));
                  if (usedBindings != null) {
                     storage.addBindings(PersistedType.Queue, queueName,
usedBindings);
                  }
               }
            }
         }
      });


but looking at the configuration parser, there is no way of specifying such
a binding, the element isn't supported:

   public static JMSQueueConfiguration parseQueueConfiguration(final Node
node) throws Exception {
      Element e = (Element) node;
      NamedNodeMap atts = node.getAttributes();
      String queueName = atts.getNamedItem(NAME_ATTR).getNodeValue();
      String selectorString = null;
      boolean durable = XMLConfigurationUtil.getBoolean(e, "durable",
DEFAULT_QUEUE_DURABILITY);
      NodeList children = node.getChildNodes();
      for (int i = 0; i < children.getLength(); i++) {
         Node child = children.item(i);

         if
(QUEUE_SELECTOR_NODE_NAME.equals(children.item(i).getNodeName())) {
            Node selectorNode = children.item(i);
            Node attNode =
selectorNode.getAttributes().getNamedItem("string");
            selectorString = attNode.getNodeValue();
         }
      }

      return newQueue(queueName, selectorString, durable);
   }

How should this now be done?

thanks, Mitchell



--
View this message in context: http://activemq.2283324.n4.nabble.com/EmbeddedJMS-doesn-t-register-JMS-topics-or-queues-tp4716605.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Mime
View raw message