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

Receiving from activemq.notifications topic with AMQP client fails with IllegalStateException: Can't deliver message

    XMLWordPrintable

Details

    • Bug
    • Resolution: Obsolete
    • Major
    • Future GA
    • AMQ 7.0.1.GA
    • None
    • Hide

      Use a QE client

      java -jar aac.jar receiver --log-msgs dict --broker amqp://127.0.0.1:5672 --address topic://activemq.notifications --count 1

      or a JUnit test

         @Test
         public void testReceiveNotification() throws Exception {
            Connection connection = createConnection("myClientId");
            try {
               Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
               MessageConsumer consumer = session.createConsumer(session.createTopic("activemq.notifications"));
               connection.start();
      
               Message message = consumer.receive(1000);
               assertNotNull(message);
               Collections.list(message.getPropertyNames()).stream().forEach(System.out::println);
            } finally {
               if (connection != null) {
                  connection.close();
               }
            }
         }
      
      Show
      Use a QE client java -jar aac.jar receiver --log-msgs dict --broker amqp://127.0.0.1:5672 --address topic://activemq.notifications --count 1 or a JUnit test @Test public void testReceiveNotification() throws Exception { Connection connection = createConnection("myClientId"); try { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer(session.createTopic("activemq.notifications")); connection.start(); Message message = consumer.receive(1000); assertNotNull(message); Collections.list(message.getPropertyNames()).stream().forEach(System.out::println); } finally { if (connection != null) { connection.close(); } } }

    Description

      According to git-bisect, the guilty commit is

      jdanek@nixos ~/Work/repos/activemq-artemis (git)-[d246aff...|bisect] % git bisect good
      cc1e084ab1178c7de9c2f72affa3037d5620f4f5 is the first bad commit
      commit cc1e084ab1178c7de9c2f72affa3037d5620f4f5
      Author: Andy Taylor <andy.tayls67@gmail.com>
      Date:   Thu May 18 08:40:35 2017 +0100
      
          ARTEMIS-1169 - Implement Interceptors for the AMQP protocol
          
          Add Outgoing call
          
          https://issues.apache.org/jira/browse/ARTEMIS-1169
          (cherry picked from commit 22f4736c8884c4e42be76cc85ab0f076a4f7d990)
          
          https://issues.jboss.org/browse/ENTMQBR-559
      
      :040000 040000 1b809e6add9012abe7ad63947ec2535b21bbcd8c 6ea8ca39ad00d2238de1bddf35a19b6febc773f7 M      artemis-protocols
      :040000 040000 d9874a4f20223c3e9a01f2d7e4f242b5883cd8c5 d43cdcf8658fe8934c34f82c9133a67dbda8caba M      tests
      

      (some commit ids do not correspond to actual commits, because I had to rebase a commit witht the test in there)

      The issue is not present in current upstream git master.

      Full log

      [Thread-2 (activemq-netty-threads-1912962767)] 14:15:34,514 WARN  [org.apache.activemq.artemis.core.server] AMQ222166: No Expiry Address configured for queue a5b83172-6bba-413b-8c1f-4d1ded041a8b in AddressSettings
      [Thread-0 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$3@1e4a7dd4-1330754528)] 14:15:34,527 WARN  [org.apache.activemq.artemis.core.server] AMQ222151: removing consumer which did not handle a message, consumer=ServerConsumerImpl [id=0, filter=null, binding=LocalQueueBinding [address=activemq.notifications, queue=QueueImpl[name=a5b83172-6bba-413b-8c1f-4d1ded041a8b, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=fcf3a0f8-54e8-11e7-8dde-185e0fec8ce5], temp=true]@15f81350, filter=null, name=a5b83172-6bba-413b-8c1f-4d1ded041a8b, clusterName=a5b83172-6bba-413b-8c1f-4d1ded041a8bfcf3a0f8-54e8-11e7-8dde-185e0fec8ce5]], message=Reference[65]:RELIABLE:CoreMessage[messageID=65,durable=true,userID=null,priority=0, timestamp=0,expiration=0, durable=true, address=activemq.notifications,properties=TypedProperties[_AMQ_Binding_Type=0,_AMQ_RoutingName=a5b83172-6bba-413b-8c1f-4d1ded041a8b,_AMQ_Distance=0,_AMQ_Address=activemq.notifications,_AMQ_NotifType=BINDING_ADDED,_AMQ_Binding_ID=64,_AMQ_NotifTimestamp=1497874534514,_AMQ_ClusterName=a5b83172-6bba-413b-8c1f-4d1ded041a8bfcf3a0f8-54e8-11e7-8dde-185e0fec8ce5,foobar=fefba608-54e8-11e7-8dde-185e0fec8ce5]]@1358602123: java.lang.IllegalStateException: Can't deliver message java.lang.ClassCastException: org.apache.activemq.artemis.core.message.impl.CoreMessage cannot be cast to org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage
      	at org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.sendMessage(AMQPSessionCallback.java:542) [:]
      	at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.deliverStandardMessage(ServerConsumerImpl.java:1050) [:]
      	at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.proceedDeliver(ServerConsumerImpl.java:430) [:]
      	at org.apache.activemq.artemis.core.server.impl.QueueImpl.proceedDeliver(QueueImpl.java:2649) [:]
      	at org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueImpl.java:2138) [:]
      	at org.apache.activemq.artemis.core.server.impl.QueueImpl.access$1700(QueueImpl.java:102) [:]
      	at org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.run(QueueImpl.java:2882) [:]
      	at org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$ExecutorTask.run(OrderedExecutorFactory.java:101) [:]
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_121]
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_121]
      	at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121]
      Caused by: java.lang.ClassCastException: org.apache.activemq.artemis.core.message.impl.CoreMessage cannot be cast to org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage
      	at org.apache.activemq.artemis.protocol.amqp.broker.AMQPSessionCallback.sendMessage(AMQPSessionCallback.java:532) [:]
      	... 10 more
      
      [main] 14:15:36,399 INFO  [org.apache.activemq.artemis.core.server] AMQ221002: Apache ActiveMQ Artemis Message Broker version 2.0.0.amq-700008 [fcf3a0f8-54e8-11e7-8dde-185e0fec8ce5] stopped, uptime 5.389 seconds
      [main] 14:15:36,583 INFO  [org.apache.activemq.artemis.core.server] #*#*# Finished test: testReceiveNotification[AMQP]()...
      
      java.lang.AssertionError
      	at org.junit.Assert.fail(Assert.java:86)
      	at org.junit.Assert.assertTrue(Assert.java:41)
      	at org.junit.Assert.assertNotNull(Assert.java:621)
              [....]
      

      Attachments

        Activity

          People

            rh-ee-ataylor Andy Taylor
            jdanek@redhat.com Jiri Daněk
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: