Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-5772

Deletion of diverts addresses not working

    XMLWordPrintable

Details

    • False
    • False
    • Hide

      In the addresses.xml add <config-delete-diverts>FORCE</config-delete-diverts> inside <address-setting match="TestQ1">

          <address-setting match="TestQ1">
              <dead-letter-address>TestQ3</dead-letter-address>
              <config-delete-diverts>FORCE</config-delete-diverts>
          </address-setting> 

      touch broker.xml

      and the divert will be deleted.

      Show
      In the addresses.xml add <config-delete-diverts>FORCE</config-delete-diverts> inside <address-setting match="TestQ1">   <address-setting match= "TestQ1" >         <dead-letter-address>TestQ3</dead-letter-address>         <config-delete-diverts>FORCE</config-delete-diverts>     </address-setting> touch broker.xml and the divert will be deleted.
    • Hide

      Step 1: Create a single node AMQ broker with any type of storage.

      Step 2: Create TestQ1, TestQ2 and TestQ3 in queue-topics.xml as shown below

      <addresses xmlns="urn:activemq:core">    <address name="DLQ">
             <anycast>
                <queue name="DLQ" />
             </anycast>
          </address>
          <address name="EXP">
             <anycast>
                <queue name="EXP" />
             </anycast>
          </address>    <address name="TestQ1">
              <anycast>
                 <queue name="TestQ1"/>
              </anycast>
          </address>
          <address name="TestQ2">
              <anycast>
                 <queue name="TestQ2"/>
              </anycast>
          </address>
          <address name="TestQ3">
              <anycast>
                 <queue name="TestQ3"/>
              </anycast>
          </address></addresses> 

       Step 3: Create address settings in addresses.xml

      <address-settings xmlns="urn:activemq:core">
          <!-- if you define auto-create on certain queues, management has to be auto-create -->
          <address-setting match="activemq.management#">
              <dead-letter-address>DLQ</dead-letter-address>
              <expiry-address>EXP</expiry-address>
              <redelivery-delay>0</redelivery-delay>
              <!-- with -1 only the global-max-size is in use for limiting -->
              <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>
          </address-setting>
          <!--default for catch all-->
          <address-setting match="#">
              <dead-letter-address>DLQ</dead-letter-address>
              <expiry-address>EXP</expiry-address>
              <redelivery-delay>0</redelivery-delay>
              <!-- with -1 only the global-max-size is in use for limiting -->
              <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>false</auto-create-queues>
              <auto-create-addresses>false</auto-create-addresses>
              <config-delete-queues>FORCE</config-delete-queues>
              <config-delete-addresses>FORCE</config-delete-addresses>
              <config-delete-diverts>FORCE</config-delete-diverts>
              <redistribution-delay>0</redistribution-delay>
              <auto-delete-queues>false</auto-delete-queues>
              <auto-delete-addresses>false</auto-delete-addresses>
          </address-setting>
          <address-setting match="TestQ2">
              <expiry-delay>345600000</expiry-delay>
              <expiry-address></expiry-address>
          </address-setting>
          <address-setting match="TestQ1">
              <dead-letter-address>TestQ3</dead-letter-address>
          </address-setting>
      </address-settings>

       

      Step 4: Create diverts in diverts.xml

      <diverts xmlns="urn:activemq:core">
          <divert name="DIVERT.TestQ1">
              <address>TestQ1</address>
              <forwarding-address>TestQ2</forwarding-address>
              <routing-type>PASS</routing-type>
              <exclusive>false</exclusive>
          </divert>
      </diverts> 

      Step 5: Create security settings in security.xml

      <security-settings xmlns="urn:activemq:core">    <security-setting match="#">
              <permission type="consume" roles="amq"/>
              <permission type="browse" roles="amq"/>
              <permission type="deleteDurableQueue" roles="amq"/>
              <permission type="manage" roles="amq"/>
              <permission type="createNonDurableQueue" roles="amq"/>
              <permission type="deleteAddress" roles="amq"/>
              <permission type="createAddress" roles="amq"/>
              <permission type="createDurableQueue" roles="amq"/>
              <permission type="send" roles="amq"/>
              <permission type="deleteNonDurableQueue" roles="amq"/>
          </security-setting>    <security-setting match="TestQ2">
              <permission type="consume" roles="amq"/>
              <permission type="browse" roles="amq"/>
              <permission type="deleteDurableQueue" roles="amq"/>
              <permission type="manage" roles="amq"/>
              <permission type="createNonDurableQueue" roles="amq"/>
              <permission type="deleteAddress" roles="amq"/>
              <permission type="createAddress" roles="amq"/>
              <permission type="createDurableQueue" roles="amq"/>
              <permission type="send" roles="amq"/>
              <permission type="deleteNonDurableQueue" roles="amq"/>
          </security-setting>    <security-setting match="TestQ1">
              <permission type="browse" roles="amq"/>
              <permission type="consume" roles="amq"/>
              <permission type="send" roles="amq"/>
          </security-setting></security-settings> 

      Step 6: Refer these xml files in broker.xml 

            <xi:include href="../etc/security.xml"/>
            <xi:include href="../etc/addresses.xml"/>
            <xi:include href="../etc/queues-topics.xml"/>
            <xi:include href="../etc/diverts.xml"/> 

      Step 7: Start the amq broker

      $ ./artemis run 

      Step 8: Verify that the divert is visible is in the jolokia console under TestQ1

      Step 9: Send few messages on the TestQ1

      $ ./artemis producer --destination queue://TestQ1 --user <<username>> --password <<password>> --url tcp://0.0.0.0:61616 --message-count 10 --msgttl 5000 

      Step 10: Verify that the messages are diverted to the TestQ2 as well using the jolokia console or the queue stat command.

      Step 11: Delete the divert from the diverts.xml but do not delete the diverts tag otherwise it will throw EOF Exception. diverts.xml will look like 

      <diverts xmlns="urn:activemq:core">
      </diverts> 

      Step 12: Touch broker.xml to reload the configurations

      touch ../etc/broker.xml  

      Step 13: broker artemis logs will show that the configurations are reloaded 

      2021-11-25 10:10:58,351 INFO  [org.apache.activemq.artemis.core.server] AMQ221056: Reloading configuration: security
      2021-11-25 10:10:58,353 INFO  [org.apache.activemq.artemis.core.server] AMQ221056: Reloading configuration: address settings
      2021-11-25 10:10:58,353 INFO  [org.apache.activemq.artemis.core.server] AMQ221056: Reloading configuration: diverts 

      Step 14: The divert is still available in the jolokia console

      Step 15: Send messages on the TestQ1. The messages are diverted to TestQ2

      Step 16: Restart the amq broker.

      The divert is still visible on the jolokia console.

      Step 17. Send some message on TestQ1, those are diverted to TestQ2

      Thus the divert is not deleted.

       

       

       

      Show
      Step 1: Create a single node AMQ broker with any type of storage. Step 2: Create TestQ1, TestQ2 and TestQ3 in queue-topics.xml as shown below <addresses xmlns= "urn:activemq:core" >    <address name= "DLQ" >        <anycast>           <queue name= "DLQ" />        </anycast>     </address>     <address name= "EXP" >        <anycast>           <queue name= "EXP" />        </anycast>     </address>    <address name= "TestQ1" >         <anycast>            <queue name= "TestQ1" />         </anycast>     </address>     <address name= "TestQ2" >         <anycast>            <queue name= "TestQ2" />         </anycast>     </address>     <address name= "TestQ3" >         <anycast>            <queue name= "TestQ3" />         </anycast>     </address></addresses>  Step 3: Create address settings in addresses.xml <address-settings xmlns= "urn:activemq:core" >     <!-- if you define auto-create on certain queues, management has to be auto-create -->     <address-setting match= "activemq.management#" >         <dead-letter-address>DLQ</dead-letter-address>         <expiry-address>EXP</expiry-address>         <redelivery-delay>0</redelivery-delay>         <!-- with -1 only the global-max-size is in use for limiting -->         <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>     </address-setting>     <!-- default for catch all-->     <address-setting match= "#" >         <dead-letter-address>DLQ</dead-letter-address>         <expiry-address>EXP</expiry-address>         <redelivery-delay>0</redelivery-delay>         <!-- with -1 only the global-max-size is in use for limiting -->         <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> false </auto-create-queues>         <auto-create-addresses> false </auto-create-addresses>         <config-delete-queues>FORCE</config-delete-queues>         <config-delete-addresses>FORCE</config-delete-addresses>         <config-delete-diverts>FORCE</config-delete-diverts>         <redistribution-delay>0</redistribution-delay>         <auto-delete-queues> false </auto-delete-queues>         <auto-delete-addresses> false </auto-delete-addresses>     </address-setting>     <address-setting match= "TestQ2" >         <expiry-delay>345600000</expiry-delay>         <expiry-address></expiry-address>     </address-setting>     <address-setting match= "TestQ1" >         <dead-letter-address>TestQ3</dead-letter-address>     </address-setting> </address-settings>   Step 4: Create diverts in diverts.xml <diverts xmlns= "urn:activemq:core" >     <divert name= "DIVERT.TestQ1" >         <address>TestQ1</address>         <forwarding-address>TestQ2</forwarding-address>         <routing-type>PASS</routing-type>         <exclusive> false </exclusive>     </divert> </diverts> Step 5: Create security settings in security.xml <security-settings xmlns= "urn:activemq:core" >    <security-setting match= "#" >         <permission type= "consume" roles= "amq" />         <permission type= "browse" roles= "amq" />         <permission type= "deleteDurableQueue" roles= "amq" />         <permission type= "manage" roles= "amq" />         <permission type= "createNonDurableQueue" roles= "amq" />         <permission type= "deleteAddress" roles= "amq" />         <permission type= "createAddress" roles= "amq" />         <permission type= "createDurableQueue" roles= "amq" />         <permission type= "send" roles= "amq" />         <permission type= "deleteNonDurableQueue" roles= "amq" />     </security-setting>    <security-setting match= "TestQ2" >         <permission type= "consume" roles= "amq" />         <permission type= "browse" roles= "amq" />         <permission type= "deleteDurableQueue" roles= "amq" />         <permission type= "manage" roles= "amq" />         <permission type= "createNonDurableQueue" roles= "amq" />         <permission type= "deleteAddress" roles= "amq" />         <permission type= "createAddress" roles= "amq" />         <permission type= "createDurableQueue" roles= "amq" />         <permission type= "send" roles= "amq" />         <permission type= "deleteNonDurableQueue" roles= "amq" />     </security-setting>    <security-setting match= "TestQ1" >         <permission type= "browse" roles= "amq" />         <permission type= "consume" roles= "amq" />         <permission type= "send" roles= "amq" />     </security-setting></security-settings> Step 6: Refer these xml files in broker.xml        <xi:include href= "../etc/security.xml" />       <xi:include href= "../etc/addresses.xml" />       <xi:include href= "../etc/queues-topics.xml" />       <xi:include href= "../etc/diverts.xml" /> Step 7: Start the amq broker $ ./artemis run Step 8: Verify that the divert is visible is in the jolokia console under TestQ1 Step 9: Send few messages on the TestQ1 $ ./artemis producer --destination queue: //TestQ1 --user <<username>> --password <<password>> --url tcp://0.0.0.0:61616 --message-count 10 --msgttl 5000 Step 10: Verify that the messages are diverted to the TestQ2 as well using the jolokia console or the queue stat command. Step 11: Delete the divert from the diverts.xml but do not delete the diverts tag otherwise it will throw EOF Exception. diverts.xml will look like  <diverts xmlns= "urn:activemq:core" > </diverts> Step 12: Touch broker.xml to reload the configurations touch ../etc/broker.xml  Step 13: broker artemis logs will show that the configurations are reloaded  2021-11-25 10:10:58,351 INFO  [org.apache.activemq.artemis.core.server] AMQ221056: Reloading configuration: security 2021-11-25 10:10:58,353 INFO  [org.apache.activemq.artemis.core.server] AMQ221056: Reloading configuration: address settings 2021-11-25 10:10:58,353 INFO  [org.apache.activemq.artemis.core.server] AMQ221056: Reloading configuration: diverts Step 14: The divert is still available in the jolokia console Step 15: Send messages on the TestQ1. The messages are diverted to TestQ2 Step 16: Restart the amq broker. The divert is still visible on the jolokia console. Step 17. Send some message on TestQ1, those are diverted to TestQ2 Thus the divert is not deleted.      

    Description

      The child address setting does not follow config-delete-diverts property defined in parent address setting. When the diverts are deleted manually from the file, it remains after broker reload too.

      Attachments

        Activity

          People

            rhn-support-jbertram Justin Bertram
            rhn-support-shchavan Shrikant Chavan (Inactive)
            Oleg Sushchenko Oleg Sushchenko
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: