Losing messages in A-MQ when queue is full. Can we have 'sendFailIfNoSpace' set for per queue/topic ?

Solution Verified - Updated -

Issue

  • We have the following scenario:

A Camel route consumes messages from a transacted A-MQ queue, processes them, and places them on another queue. If an exception occurs in the route, an onException clause catches it, and sends the message to a different queue (in effect a custom DLQ).

The A-MQ broker is configured to send errors back to the client (sendFailIfNoSpace="true") so that in the event that the inbound queue is full, the client can fail gracefully rather than hanging indefinitely. However, if the custom DLQ becomes full, it also sends an error back to the client, which in this case is Camel. Because Camel is already in an onException clause, we can't catch another exception. If this happens, the message is lost.

  • What we need is to be able to send a failure to clients of specific queues, rather than a blanket setting at the broker level. However this doesn't seem to be possible. Can we have the sendFailIfNoSpace configured for per queue/topic ?

Environment

  • Red Hat JBoss Fuse
    • 6.x
  • Red Hat JBoss A-MQ
    • 6.x
  • Apache ActiveMQ

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content