Can you set the parameter globally like this:

ActiveMQComponent activeMQComponent = new ActiveMQComponent();
activeMQComponent.setPreserveMessageQos(true);
context.addComponent("activemq2",activeMQComponent);


On Mon, Apr 3, 2023 at 12:27 PM Ephemeris Lappis <ephemeris.lap...@gmail.com>
wrote:

> Hello.
>
> In fact I think I'd only need to set one header for expiration time.
> Something like that :
>
>             <setHeader name="JMSExpiration">
>                 <simple>${date:now+30m}</simple>
>             </setHeader>
>             <to uri="jms:queue:fifi1?connectionFactory=#myJMS" />
>
> But it seems that for overriding the default JMSExpiration another
> change must be done on the endpoint (otherwise the JMSExpiration is
> not set before the message is sent) :
>
>             <to
> uri="jms:queue:fifi1?connectionFactory=#myJMS&amp;preserveMessageQos=true"
> />
>
> So, is there any way to add the "preserveMessageQos=true" indication
> using a header, since I can't modify the endpoint URI ?
>
> Thanks again.
>
> Regards.
>
> Le lun. 3 avr. 2023 à 09:43, ski n <raymondmees...@gmail.com> a écrit :
> >
> > I should be possible as Camel Headers are translated to JMS Headers when
> > sending to an ActiveMQ queue or topic. This can be tricky though as
> > sometimes JMS Headers are not set by the client but by the broker (for
> > example JMSTimestamp), so you can't use all headers.
> >
> > You can check this page with the possibilities:
> >
> > https://activemq.apache.org/activemq-message-properties
> >
> > Another thing is that values you need to give are not always very logical
> > for example JMSDeliveryMode. According to the Java EE documentation:
> >
> > "The delivery modes supported by the JMS API are *PERSISTENT and
> > NON_PERSISTENT* . A client marks a message as persistent if it feels that
> > the application will have problems if the message is lost in transit. A
> > client marks a message as non-persistent if an occasional lost message is
> > tolerable."
> >
> > As there are only two modes, you made expect that its a boolean value.
> > However it's int (as also noted on the ActiveMQ documentation page). Then
> > you may think the values used are 0 and 1. It's however 1
> (NON-PERSISTENT)
> > and 2 (PERSISTENT). Mostly in code static values are used, but when
> sending
> > headers as text, these are things to consider.
> >
> > Kind regards,
> >
> > Raymond
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On Mon, Apr 3, 2023 at 8:47 AM Ephemeris Lappis <
> ephemeris.lap...@gmail.com>
> > wrote:
> >
> > > Hello.
> > >
> > > Thanks for your idea. I had a look at the JMs component unit tests,
> > > but I've not found any that use only headers to set messages time to
> > > live.
> > > Could you please give us some example ?
> > >
> > > Thanks again. Regards
> > >
> > > Le ven. 31 mars 2023 à 18:34, Claus Ibsen <claus.ib...@gmail.com> a
> écrit
> > > :
> > > >
> > > > A good idea is to look at the unit tests in the camel components
> > > >
> > > > On Fri, Mar 31, 2023 at 6:27 PM Ephemeris Lappis <
> > > ephemeris.lap...@gmail.com>
> > > > wrote:
> > > >
> > > > > Hello.
> > > > >
> > > > > I've not found any way to set messages time to live when sending
> to a
> > > > > JMS (activemq) queue.
> > > > >
> > > > > I'd like to set headers only, without changing the endpoint URI.
> Is it
> > > > > possible ?
> > > > > I've read (and tested it too) that if a message header is set for
> the
> > > > > JMSExpiration, it's not taken into account if the option
> > > > > "preserveMessageQos" is not added into the URI. So, is there any
> other
> > > > > way using other headers ?
> > > > >
> > > > > Thanks for your help.
> > > > >
> > > > > Regards.
> > > > >
> > > >
> > > >
> > > > --
> > > > Claus Ibsen
> > > > -----------------
> > > > @davsclaus
> > > > Camel in Action 2: https://www.manning.com/ibsen2
> > >
>

Reply via email to