How to solve this error: Received disposition with role=receiver

dreamoka
dreamoka Member Posts: 56 ✭✭✭
edited May 1 in General Discussions #1

I using AMQP Camel to read message from Queue A, add header to the message and send to topic B. There will be 200 message every 300 millisecond. Based on the log file, the JMS MessageConsumer closed every 1 seconds. I don't know why. Can someone give me hint how to prevent the MessageConsumer to close ?

Camel Route

  <routeContext id="test-context" xmlns="http://camel.apache.org/schema/spring">
<route id="route-test">
<from uri="amqp:queue:Q/A?concurrentConsumers=10&amp;maxConcurrentConsumers=10"/>
<setHeader name="TEST_HEADER">
<constant>TEST1234</constant>
</setHeader>
<toD uri="amqp:topic:b"/>
</route>
</routeContext>

Log File

13:48:14.829 [QpidJMS Connection Executor: ID:5a8c0a33-724e-47c1-a243-6a2c724f8222:1] INFO  org.apache.qpid.jms.JmsSession - A JMS MessageConsumer has been closed: JmsConsumerInfo: { ID:5a8c0a33-724e-47c1-a243-6a2c724f8222:1:9:1, destination = Q/test/handlingmessage }
13:48:14.839 [Camel (ems-camel) thread #9 - JmsConsumer[Q/test/handlingmessage]] WARN org.apache.camel.component.jms.DefaultJmsMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'Q/test/handlingmessage' - trying to recover. Cause: Received disposition with role=receiver delivery-id=128 settled=true: unsupported outcome=modified [condition = amqp:not-implemented

Tagged:

Comments

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 959 admin
    edited April 18 #2

    Hey @dreamoka,

    I haven't tried this out w/ Camel & AMQP but I think there are two paths forward here:

    1. Test out using "CACHE_CONSUMER" as your cacheLevelName
    2. Try using the CachingConnectionFactory as it very widely used by Solace & JMS users.

    Hope that helps!

  • Aaron
    Aaron Member, Administrator, Moderator, Employee Posts: 638 admin

    Your error from the broker says "not implemented". Something you or Camel is trying to do via AMQP is not implemented by the Solace broker. If just using Camel, why not use Camel with the Solace JMS API?

  • dreamoka
    dreamoka Member Posts: 56 ✭✭✭

    @marc I also faced the same error when using CACHE_CONSUMER and CachingConnectionFactory.

    @Aaron My partner and I decided to use AMQP protocol. He is using Camel AMQP. He told me he has problem in consuming the message from my queue.

    The connection is up and down. He told me that he saw "Cause: Received disposition with role=receiver delivery-id=128 settled=true: unsupported outcome=modified [condition = amqp:not-implemented" in the log file. I decided to test on my end and found out that i also faced the same issue.

    May i know what is "outcome=modified" ? I wonder is it related to the TTL of the message. As i put 1 seconds to the message. The error will not occurred if i turn off the "Respect TTL" in the queue setting.

  • Aaron
    Aaron Member, Administrator, Moderator, Employee Posts: 638 admin
    edited April 29 #5

    Ah, ok. Looking here at the AMQP spec: https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#section-delivery-state

    There are a number of outcomes specified. Solace doesn't support "modified". A message on a queue can't be changed/updated by anyone, consumer or publisher. Only "accepted", "rejected", or "released" outcomes are supported by Solace. So you'll have to update your Camel config to not try to do a "modified".

    EDIT: check out protocol conformance page here: https://docs.solace.com/API/AMQP/AMQP-Protocol-Conformance.htm and look for section 3.4.

  • marc
    marc Member, Administrator, Moderator, Employee Posts: 959 admin

    Awesome, good troubleshooting @Aaron !

  • Tamimi
    Tamimi Member, Administrator, Employee Posts: 541 admin

    Hey @dreamoka hopefully this answers your question! and FYI I updated your original post to code format your code blocks