Uploaded image for project: 'ActiveMQ Artemis'
  1. ActiveMQ Artemis
  2. ARTEMIS-1352

Artemis 2.2.0, createTopic create an anycast queue when there is no consumer created

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.2.0
    • 2.4.0
    • None
    • None

    Description

      I have downloaded the latest Artemis 2.2.0 and testing it with Qpid AMQP client 0.23.0 and sending message through a Topic. Here is my config in broker.xml (Basically, it is default from the box):

      <security-settings>
      <security-setting match="#">
      <permission type="createNonDurableQueue" roles="amq"/>
      <permission type="deleteNonDurableQueue" roles="amq"/>
      <permission type="createDurableQueue" roles="amq"/>
      <permission type="deleteDurableQueue" roles="amq"/>
      <permission type="createAddress" roles="amq"/>
      <permission type="deleteAddress" roles="amq"/>
      <permission type="consume" roles="amq"/>
      <permission type="browse" roles="amq"/>
      <permission type="send" roles="amq"/>
      <permission type="manage" roles="amq"/>
      </security-setting>
      </security-settings>

      <address-setting match="#">
      <dead-letter-address>DLQ</dead-letter-address>
      <expiry-address>ExpiryQueue</expiry-address>
      <redelivery-delay>0</redelivery-delay>

      <max-size-bytes>-1</max-size-bytes>
      <message-counter-history-day-limit>10</message-counter-history-day-limit>
      <address-full-policy>PAGE</address-full-policy>
      <auto-create-queues>true</auto-create-queues>
      <auto-create-addresses>true</auto-create-addresses>
      <auto-create-jms-queues>true</auto-create-jms-queues>
      <auto-create-jms-topics>true</auto-create-jms-topics>
      </address-setting>

      Here is my sender side code:
      String connectionUrl = "amqp://localhost:5672";
      ConnectionFactory connectionFactory = new JmsConnectionFactory(connectionUrl);
      connection = connectionFactory.createConnection();

      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      Topic topicQueue = session.createTopic("SpyTopic9");
      MessageProducer topicSender = session.createProducer(topicQueue);

      and receiver side:
      Topic topicQueue = session.createTopic("SpyTopic9");
      MessageConsumer topicConsumer = session.createConsumer(topicQueue);

      my sender and receiver code is a 2 separate program which located on 2 different machine. I noticed that if I start sender side program first without receiver side code running, the artemis created a anycast instead of multicast. And if at this time, I start the receiver side, it shows me the following message :

      Exception:Address SpyTopic9 is not configured for topic support [condition = amqp:illegal-state]

      And if I started receiver first and then start sender, then everything looks fine.

      I wonder if the topic should be created as a multicast when auto-created address is configured. Thanks.

      Attachments

        Activity

          People

            jbertram Justin Bertram
            aavchen2 vina chen
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: