You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2020/12/14 12:21:00 UTC
[jira] [Resolved] (CAMEL-15892) CamelJmsDestinationName header
ignored (when set in dlc.onPrepareFailure)
[ https://issues.apache.org/jira/browse/CAMEL-15892?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen resolved CAMEL-15892.
---------------------------------
Resolution: Information Provided
> CamelJmsDestinationName header ignored (when set in dlc.onPrepareFailure)
> -------------------------------------------------------------------------
>
> Key: CAMEL-15892
> URL: https://issues.apache.org/jira/browse/CAMEL-15892
> Project: Camel
> Issue Type: Improvement
> Components: camel-jms
> Affects Versions: 3.6.0
> Reporter: Bernard Ligny
> Priority: Minor
>
> I'm trying to setup a smart JMS DeadLetterChannel where the final uri of the DLQ is computed dynamically, depending on original queue name (eg adding a ".dead" suffix).
> I have seen in the doc that it's possible by setting the *CamelJmsDestinationName* header:
> [https://camel.apache.org/components/latest/jms-component.html#_reuse_endpoint_and_send_to_different_destinations_computed_at_runtime]
> Therefore, I tried this:
> {code:java}
> DefaultErrorHandlerBuilder dlc = deadLetterChannel("jms:queue:dummy")
> .useOriginalMessage()
> .maximumRedeliveries(2);
> dlc.onPrepareFailure( exchange -> {
> // Override destination
> exchange.getMessage().setHeader("CamelJmsDestinationName", "jms:queue:test");
> });
> {code}
> I have tried many different values for *CamelJmsDestinationName* :
> - "jms:queue:test"
> - "queue:test"
> - "test"
> But none of them is working; the header is ignored and the exchange always goes to original uri ("queue:dummy").
> I'm using Camel 3.6 and *camel-{color:#de350b}s{color}jms{color:#de350b}2{color}* component bound to an Artemis ActiveMQ broker (the one bundled with Wildfly20):
> {code:java}
> @Resource(mappedName = "java:/ConnectionFactory")
> private static ConnectionFactory connectionFactory;
> @Produces
> @ApplicationScoped
> @Named("jms")
> public final Sjms2Component createJmsComponent() {
> Sjms2Component component = new Sjms2Component();
> ConnectionResource pool = new ConnectionFactoryResource(poolSize, connectionFactory);
> component.setConnectionResource(pool);
> return component;
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)