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&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 <[email protected]> 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 <[email protected]>
> 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 <[email protected]> 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 <
> > [email protected]>
> > > 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
> >