Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
-
None
-
Moderate
Description
Currently a DirectConsumerNotAvailableException or DirectVmConsumerNotAvailableException is thrown when a message is send via a direct endoint and no consumer has been set up for this endpoint.
In a current scenario I want to use camel to loosely couple two components using direct endpoints that might be consumed by some bean. Especially there should be no dependency from the producing component to the consuming component. However, if there is a consumer, messages send from the producer must be consumed synchronously in the same thread to preserve the transaction context of the producer. That why I chose direct for the producer's endpoint.
What is meant by "the messages might be consumed" is that the consuming component might not be deployed, when the consumer produces the first messages, or perhaps will never be deployed. I know there is the block option for the direct component but I don't want the producer to wait for the consumer as it might take some time (possibly forever) for the consumer to be available.
I think this is a very common scenario for a messaging system and I was surprised not to find an easy out-of-the-box way to handle this with camel. That's why I think an additional option failIfNoConsumers (similar to the option for the seda component) for the direct and direct-vm component would be very handy.