7 Replies Latest reply on Jun 24, 2014 11:39 AM by s0lstice

    removeMessages :: Not a HornetQ Destination

    s0lstice

      Hello

       

      I'm blocked on method to clear a JMS queue. Could you help me ?

       

      Thanks.

       

      Mickaël

       

      Logs :

      16:07:38,625 INFO  [stdout] (http--127.0.0.1-8080-1) Start clearing MyQueue

      16:07:38,641 INFO  [stdout] (http--127.0.0.1-8080-1) //!!!!\\ createQueue

      16:07:38,672 INFO  [stdout] (http--127.0.0.1-8080-1) //!!!!\\ queueSession

      16:07:38,765 INFO  [stdout] (http--127.0.0.1-8080-1) //!!!!\\ requestor

      16:07:38,765 INFO  [stdout] (http--127.0.0.1-8080-1) Error during clearing MyQueue : javax.jms.InvalidDestinationException: Not a HornetQ Destination:HornetQQueue[hornetq.management]

      Code :

       

      @Stateless
      public class MyQueueService {
      
          @Resource(mappedName = "java:/ConnectionFactory")
          private QueueConnectionFactory cf;
      
          @Resource(mappedName = "java:jboss/jms/queue/MyQueue")
          private Queue MyQueue;
      
          public void ClearMyQueue()
          {
      
              System.out.println("Start clearing MyQueue");
              Queue managementQueue = null;
              QueueRequestor requestor = null;
              QueueConnection queueConnection = null;
              QueueSession queueSession = null;
             
              try {
      
                  System.out.println("//!!!!\\\\ createQueue");
                  managementQueue = HornetQJMSClient.createQueue("hornetq.management");
                  queueConnection = cf.createQueueConnection();
                  System.out.println("//!!!!\\\\ queueSession");
                  queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
                  System.out.println("//!!!!\\\\ requestor");
                  requestor = new QueueRequestor(queueSession, managementQueue);
                  System.out.println("//!!!!\\\\ start");
                  queueConnection.start();
                  System.out.println("//!!!!\\\\ message");
                  Message message = session.createMessage();
                  System.out.println("//!!!!\\\\ JMSManagementHelper");
                  JMSManagementHelper.putOperationInvocation(message, MyQueue.getQueueName(), "removeMessages","*");
                  System.out.println("//!!!!\\\\ reply");
                  Message reply = requestor.request(message);
                  System.out.println("//!!!!\\\\ success");
                  boolean success = JMSManagementHelper.hasOperationSucceeded(reply);
                  if(!success)  System.out.println("Error during clearing MyQueue : operation faill");
                  System.out.println("//!!!!\\\\ END");
      
              } catch (Exception exc) {
                  System.out.println("Error during clearing MyQueue : " + exc);
              } finally
              {
                  if (queueConnection != null) {
                      try {
                          queueConnection.close();
                      } catch (JMSException e) {
                          System.out.println("Error during closing connection" + e);
                      }
                  }
              }
              System.out.println("End clearing MyQueue");
          }
      }
      
      

      standalone configuration :

       

      <subsystem xmlns="urn:jboss:domain:messaging:1.1">
        <hornetq-server>
            <clustered>true</clustered>
            <persistence-enabled>true</persistence-enabled>
            <cluster-user>clusteruser</cluster-user>
            <cluster-password>cluster-secret</cluster-password>
            <journal-file-size>102400</journal-file-size>
            <journal-min-files>2</journal-min-files>
      
            <connectors>
                <netty-connector name="netty" socket-binding="messaging"/>
                <netty-connector name="netty-throughput" socket-binding="messaging-throughput">
                    <param key="batch-delay" value="50"/>
                </netty-connector>
                <in-vm-connector name="in-vm" server-id="0"/>
            </connectors>
      
            <acceptors>
                <netty-acceptor name="netty" socket-binding="messaging"/>
                <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
                    <param key="batch-delay" value="50"/>
                    <param key="direct-deliver" value="false"/>
                </netty-acceptor>
                <in-vm-acceptor name="in-vm" server-id="0"/>
            </acceptors>
      
            <broadcast-groups>
                <broadcast-group name="bg-group1">
                    <group-address>231.7.7.7</group-address>
                    <group-port>9876</group-port>
                    <broadcast-period>1000</broadcast-period>
                    <connector-ref>
                        netty
                    </connector-ref>
                </broadcast-group>
            </broadcast-groups>
      
            <discovery-groups>
                <discovery-group name="dg-group1">
                    <group-address>231.7.7.7</group-address>
                    <group-port>9876</group-port>
                    <refresh-timeout>10000</refresh-timeout>
                </discovery-group>
            </discovery-groups>
      
            <cluster-connections>
                <cluster-connection name="my-cluster">
                    <address>jms</address>
                    <connector-ref>netty</connector-ref>
                    <discovery-group-ref discovery-group-name="dg-group1"/>
                </cluster-connection>
            </cluster-connections>
      
            <security-settings>
                <security-setting match="#">
                    <permission type="send" roles="guest"/>
                    <permission type="consume" roles="guest"/>
                    <permission type="createNonDurableQueue" roles="guest"/>
                    <permission type="deleteNonDurableQueue" roles="guest"/>
                </security-setting>
                <security-setting match="jms.queue.hornetq.management">
                    <permission type="manage" roles="guest"/>
                </security-setting>
            </security-settings>
      
            <address-settings>
                <address-setting match="jms.queue.MyQueue">
                    <redelivery-delay>30000</redelivery-delay>
                    <max-delivery-attempts>15</max-delivery-attempts>
                    <redistribution-delay>0</redistribution-delay>
                </address-setting>
                <address-setting match="#">
                    <dead-letter-address>jms.queue.DLQ</dead-letter-address>
                    <expiry-address>jms.queue.ExpiryQueue</expiry-address>
                    <redelivery-delay>0</redelivery-delay>
                    <max-size-bytes>10485760</max-size-bytes>
                    <address-full-policy>BLOCK</address-full-policy>
                    <message-counter-history-day-limit>10</message-counter-history-day-limit>
                    <redistribution-delay>0</redistribution-delay>
                </address-setting>
            </address-settings>
      
            <jms-connection-factories>
                <connection-factory name="InVmConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="in-vm"/>
                    </connectors>
                    <entries>
                        <entry name="java:/ConnectionFactory"/>
                    </entries>
                </connection-factory>
                <connection-factory name="RemoteConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="netty"/>
                    </connectors>
                    <entries>
                        <entry name="RemoteConnectionFactory"/>
                        <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
                    </entries>
                </connection-factory>
                <pooled-connection-factory name="hornetq-ra">
                    <transaction mode="xa"/>
                    <connectors>
                        <connector-ref connector-name="in-vm"/>
                    </connectors>
                    <entries>
                        <entry name="java:/JmsXA"/>
                    </entries>
                </pooled-connection-factory>
            </jms-connection-factories>
      
            <jms-destinations>
                <jms-queue name="MyQueue">
                    <entry name="java:jboss/jms/queue/MyQueue"/>
                    <durable>true</durable>
                </jms-queue>
            </jms-destinations>
        </hornetq-server>
      </subsystem>
      
      
        • 1. Re: removeMessages :: Not a HornetQ Destination
          jbertram

          What is MyQueue.getQueueName() returning?

          • 2. Re: removeMessages :: Not a HornetQ Destination
            s0lstice

            Hi, thanks for your answer

             

            The value of MyQueue.getQueueName() is "MyQueue".

             

            According to the log, error occur line 27, before MyQueue.getQueueName().

            • 3. Re: removeMessages :: Not a HornetQ Destination
              jbertram

              I'm not sure what's going wrong here.  Can you reproduce this on the latest release of Wildfly?

              • 4. Re: removeMessages :: Not a HornetQ Destination
                s0lstice

                Hi !

                 

                I finished the configuration of Wildfly

                Unfortunately that changed nothing

                I have the same error at the same line.

                 

                Please; Do you have any idea or suggestion ?

                • 5. Re: removeMessages :: Not a HornetQ Destination
                  jbertram

                  Can you attach a reproducible test-case (e.g. based on the management example we ship in HornetQ)? 

                  • 6. Re: Re: removeMessages :: Not a HornetQ Destination
                    s0lstice

                    Hello,

                     

                    This example is based on my actual work.

                     

                    You dispose of 2 URL :

                     

                    First : localhost:8080/HQClearTest/rest/hornetQ/add/MESSAGE to add MESSAGE in the queue

                     

                    Second : localhost:8080/HQClearTest/rest/hornetQ/clear to flush the queue

                     

                    The message is printed 45s after sending. Unless the queue is cleared.

                     

                    I add log to show the result and the error :

                     

                    03:07,594 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS018559: Deployed "HQClearTest.war" (runtime-name : "HQClearTest.war")

                    03:22,964 INFO  [stdout] (default task-4) sended : message 1

                    03:28,685 INFO  [stdout] (default task-5) sended : message 2

                    03:30,856 INFO  [stdout] (default task-6) sended : message 3

                    03:33,908 INFO  [stdout] (default task-7) sended : message 4

                    03:36,978 INFO  [stdout] (default task-8) sended : message 5

                    03:40,149 INFO  [stdout] (default task-9) Start clearing MyQueue

                    03:40,169 INFO  [stdout] (default task-9) Error during clearing MyQueue : javax.jms.InvalidDestinationException: Not a HornetQ Destination:HornetQQueue[hornetq.management]

                    04:07,985 INFO  [stdout] (Thread-0 (HornetQ-client-global-threads-458526778)) message : message 1

                    04:13,686 INFO  [stdout] (Thread-3 (HornetQ-client-global-threads-458526778)) message : message 2

                    04:15,867 INFO  [stdout] (Thread-0 (HornetQ-client-global-threads-458526778)) message : message 3

                    04:18,928 INFO  [stdout] (Thread-3 (HornetQ-client-global-threads-458526778)) message : message 4

                    04:21,989 INFO  [stdout] (Thread-0 (HornetQ-client-global-threads-458526778)) message : message 5

                     

                    Thank very much for your help

                     

                    Mickaël

                    • 7. Re: removeMessages :: Not a HornetQ Destination
                      s0lstice

                      Hello,

                       

                      Do you reproduced this InvalidDestinationException.

                       

                      Have you any suggestion to avoid it ?

                       

                      Thanks again for your expertise