You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by Andrea Zoppello <zo...@tiscali.it> on 2007/11/22 16:41:27 UTC

Some question about queue persistence.

Hi all,

I'm trying to configure servicemix to use the activemq persistence of 
message so i add this:
configuration:

<amq:persistenceAdapter>
      <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
</amq:persistenceAdapter>

This seems to work.

BTW I've two question:

1) In smx there's a queue for each jbi endpoint. The question is if i've 
a sa composed of three
endpoint Ep1->Ep2->Ep3 it's possible to make persistent only the message 
of the queue related to EP1 ?

2) I try the configuration with mysql database and smx 3.1.2 but this is 
not working. I set the log level
to debug and it seems that smx is blocked trying to aquire a lock on the 
database. This cause smx not to start.
Any suggestion about this.

Andrea Zoppello






Re: Some question about queue persistence.

Posted by Guillaume Nodet <gn...@gmail.com>.
On Nov 26, 2007 10:22 AM, Andrea Zoppello <zo...@tiscali.it> wrote:

> Thank you very much.
> See inline comments.
>
> Guillaume Nodet ha scritto:
> > There's a difference between persisting a JBI exchange and a JMS
> message.
> >
>
> Yes I know the difference. Now ( thank to you ) i know how to make JBI
> Exchange persistent but not how to make jms message persistent


Well, if the JBI exchange is flagged as persistent, it will go through the
JMS flow which will create a persistent JMS message.


>
>
> <amq:persistenceAdapter>
>    <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
> </amq:persistenceAdapter>
>
> As you already know i've try this to save the JMS Message, but i don't
> find anything
> on the activemq tables.
> Do you know if is there detailed documentation, or books about ActiveMQ?
> I've already see the doc in the site but i need something more detailed.


I would try searching the activemq web site using the google search box, or
looking at the forums.


>
>
> Thanks
> Andrea
>
> > ActiveMQ is a JMS broker and persist the message if it has been
> configured
> > to do so (this is done when sending the message).  For JBI exchange,
> each
> > message can have a "persistent" flag (with default values on the
> > ActivationSpec and on the container).  If the flag is true, then the NMR
> > will select a flow that can handle persistent message: i.e. the jms
> flow.
> > The thing is that the JMS flow can also be used for remoting, so that
> > message won't be persistent by default iirc.
> > Just try the following:
> >
> >    <smx:container persistent="true" ...>
> >
> > and all messages will be persistent.
> >
> > On Nov 26, 2007 9:50 AM, Andrea Zoppello <zo...@tiscali.it> wrote:
> >
> >
> >> Hi Guillaume,
> >>
> >> Thanks for the response.
> >>
> >> BTW In my previous post i've say something wrong.
> >>
> >> If i configure the activemq persistence like:
> >>
> >> <amq:persistenceAdapter>
> >>     <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
> >> </amq:persistenceAdapter>
> >>
> >>
> >> and then after running some processes, i stop smx and i look to
> >> derby database i don't find any message in the queue.
> >>
> >> I think this was enough, but it seems i was missing something.
> >>
> >> The solution to register a custom listener enabling the persistence by
> >> setting the property
> >> on the message seems to fit my need, so i think i'll adopt this
> solution.
> >>
> >> Btw, if i really understand well, it seems that i can enable
> persistence
> >> of only * Lightweigth
> >> Endpoint* is this right?
> >>
> >> If i want to persist all messages, which is the right way to configure
> >> persistence on the
> >> broker.
> >>
> >> Andrea Zoppello
> >>
> >> Guillaume Nodet ha scritto:
> >>
> >>> On Nov 22, 2007 4:41 PM, Andrea Zoppello <zo...@tiscali.it> wrote:
> >>>
> >>>
> >>>
> >>>> Hi all,
> >>>>
> >>>> I'm trying to configure servicemix to use the activemq persistence of
> >>>> message so i add this:
> >>>> configuration:
> >>>>
> >>>> <amq:persistenceAdapter>
> >>>>      <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
> >>>> </amq:persistenceAdapter>
> >>>>
> >>>> This seems to work.
> >>>>
> >>>> BTW I've two question:
> >>>>
> >>>> 1) In smx there's a queue for each jbi endpoint. The question is if
> >>>>
> >> i've
> >>
> >>>> a sa composed of three
> >>>> endpoint Ep1->Ep2->Ep3 it's possible to make persistent only the
> >>>>
> >> message
> >>
> >>>> of the queue related to EP1 ?
> >>>>
> >>>>
> >>> Persistence is defined on a per message level, but it's kinda hard to
> >>> configure.
> >>> The NMR will check if persistence is enabled at three different
> levels:
> >>>
> >> on
> >>
> >>> the message  by looking for a given property on the exchange (
> >>> org.apache.servicemix.persistent), on the endpoint by looking at the
> >>> corresponding activationSpec (so it does not really fit well with non
> >>> lightweight components) and on the broker.  I suppose the way you
> could
> >>> change that is by registering a listener on the container, filter the
> >>> exchanges you want and put the property on it.
> >>>
> >>>
> >>>
> >>>
> >>>> 2) I try the configuration with mysql database and smx 3.1.2 but this
> >>>>
> >> is
> >>
> >>>> not working. I set the log level
> >>>> to debug and it seems that smx is blocked trying to aquire a lock on
> >>>>
> >> the
> >>
> >>>> database. This cause smx not to start.
> >>>> Any suggestion about this.
> >>>>
> >>>>
> >>> You should try with the default ActiveMQ distribution and / or ask on
> >>>
> >> the
> >>
> >>> activemq user list.
> >>>
> >>>
> >>>
> >>>
> >>>> Andrea Zoppello
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>
> >
> >
> >
>
>


-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/

Re: Some question about queue persistence.

Posted by Andrea Zoppello <zo...@tiscali.it>.
Thank you very much.
See inline comments.

Guillaume Nodet ha scritto:
> There's a difference between persisting a JBI exchange and a JMS message.
>   

Yes I know the difference. Now ( thank to you ) i know how to make JBI 
Exchange persistent but not how to make jms message persistent

<amq:persistenceAdapter>
    <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
</amq:persistenceAdapter>

As you already know i've try this to save the JMS Message, but i don't 
find anything
on the activemq tables.
Do you know if is there detailed documentation, or books about ActiveMQ?
I've already see the doc in the site but i need something more detailed.

Thanks
Andrea

> ActiveMQ is a JMS broker and persist the message if it has been configured
> to do so (this is done when sending the message).  For JBI exchange, each
> message can have a "persistent" flag (with default values on the
> ActivationSpec and on the container).  If the flag is true, then the NMR
> will select a flow that can handle persistent message: i.e. the jms flow.
> The thing is that the JMS flow can also be used for remoting, so that
> message won't be persistent by default iirc.
> Just try the following:
>
>    <smx:container persistent="true" ...>
>
> and all messages will be persistent.
>
> On Nov 26, 2007 9:50 AM, Andrea Zoppello <zo...@tiscali.it> wrote:
>
>   
>> Hi Guillaume,
>>
>> Thanks for the response.
>>
>> BTW In my previous post i've say something wrong.
>>
>> If i configure the activemq persistence like:
>>
>> <amq:persistenceAdapter>
>>     <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
>> </amq:persistenceAdapter>
>>
>>
>> and then after running some processes, i stop smx and i look to
>> derby database i don't find any message in the queue.
>>
>> I think this was enough, but it seems i was missing something.
>>
>> The solution to register a custom listener enabling the persistence by
>> setting the property
>> on the message seems to fit my need, so i think i'll adopt this solution.
>>
>> Btw, if i really understand well, it seems that i can enable persistence
>> of only * Lightweigth
>> Endpoint* is this right?
>>
>> If i want to persist all messages, which is the right way to configure
>> persistence on the
>> broker.
>>
>> Andrea Zoppello
>>
>> Guillaume Nodet ha scritto:
>>     
>>> On Nov 22, 2007 4:41 PM, Andrea Zoppello <zo...@tiscali.it> wrote:
>>>
>>>
>>>       
>>>> Hi all,
>>>>
>>>> I'm trying to configure servicemix to use the activemq persistence of
>>>> message so i add this:
>>>> configuration:
>>>>
>>>> <amq:persistenceAdapter>
>>>>      <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
>>>> </amq:persistenceAdapter>
>>>>
>>>> This seems to work.
>>>>
>>>> BTW I've two question:
>>>>
>>>> 1) In smx there's a queue for each jbi endpoint. The question is if
>>>>         
>> i've
>>     
>>>> a sa composed of three
>>>> endpoint Ep1->Ep2->Ep3 it's possible to make persistent only the
>>>>         
>> message
>>     
>>>> of the queue related to EP1 ?
>>>>
>>>>         
>>> Persistence is defined on a per message level, but it's kinda hard to
>>> configure.
>>> The NMR will check if persistence is enabled at three different levels:
>>>       
>> on
>>     
>>> the message  by looking for a given property on the exchange (
>>> org.apache.servicemix.persistent), on the endpoint by looking at the
>>> corresponding activationSpec (so it does not really fit well with non
>>> lightweight components) and on the broker.  I suppose the way you could
>>> change that is by registering a listener on the container, filter the
>>> exchanges you want and put the property on it.
>>>
>>>
>>>
>>>       
>>>> 2) I try the configuration with mysql database and smx 3.1.2 but this
>>>>         
>> is
>>     
>>>> not working. I set the log level
>>>> to debug and it seems that smx is blocked trying to aquire a lock on
>>>>         
>> the
>>     
>>>> database. This cause smx not to start.
>>>> Any suggestion about this.
>>>>
>>>>         
>>> You should try with the default ActiveMQ distribution and / or ask on
>>>       
>> the
>>     
>>> activemq user list.
>>>
>>>
>>>
>>>       
>>>> Andrea Zoppello
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>         
>>>
>>>       
>>     
>
>
>   


Re: Some question about queue persistence.

Posted by Guillaume Nodet <gn...@gmail.com>.
There's a difference between persisting a JBI exchange and a JMS message.
ActiveMQ is a JMS broker and persist the message if it has been configured
to do so (this is done when sending the message).  For JBI exchange, each
message can have a "persistent" flag (with default values on the
ActivationSpec and on the container).  If the flag is true, then the NMR
will select a flow that can handle persistent message: i.e. the jms flow.
The thing is that the JMS flow can also be used for remoting, so that
message won't be persistent by default iirc.
Just try the following:

   <smx:container persistent="true" ...>

and all messages will be persistent.

On Nov 26, 2007 9:50 AM, Andrea Zoppello <zo...@tiscali.it> wrote:

> Hi Guillaume,
>
> Thanks for the response.
>
> BTW In my previous post i've say something wrong.
>
> If i configure the activemq persistence like:
>
> <amq:persistenceAdapter>
>     <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
> </amq:persistenceAdapter>
>
>
> and then after running some processes, i stop smx and i look to
> derby database i don't find any message in the queue.
>
> I think this was enough, but it seems i was missing something.
>
> The solution to register a custom listener enabling the persistence by
> setting the property
> on the message seems to fit my need, so i think i'll adopt this solution.
>
> Btw, if i really understand well, it seems that i can enable persistence
> of only * Lightweigth
> Endpoint* is this right?
>
> If i want to persist all messages, which is the right way to configure
> persistence on the
> broker.
>
> Andrea Zoppello
>
> Guillaume Nodet ha scritto:
> > On Nov 22, 2007 4:41 PM, Andrea Zoppello <zo...@tiscali.it> wrote:
> >
> >
> >> Hi all,
> >>
> >> I'm trying to configure servicemix to use the activemq persistence of
> >> message so i add this:
> >> configuration:
> >>
> >> <amq:persistenceAdapter>
> >>      <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
> >> </amq:persistenceAdapter>
> >>
> >> This seems to work.
> >>
> >> BTW I've two question:
> >>
> >> 1) In smx there's a queue for each jbi endpoint. The question is if
> i've
> >> a sa composed of three
> >> endpoint Ep1->Ep2->Ep3 it's possible to make persistent only the
> message
> >> of the queue related to EP1 ?
> >>
> >
> >
> > Persistence is defined on a per message level, but it's kinda hard to
> > configure.
> > The NMR will check if persistence is enabled at three different levels:
> on
> > the message  by looking for a given property on the exchange (
> > org.apache.servicemix.persistent), on the endpoint by looking at the
> > corresponding activationSpec (so it does not really fit well with non
> > lightweight components) and on the broker.  I suppose the way you could
> > change that is by registering a listener on the container, filter the
> > exchanges you want and put the property on it.
> >
> >
> >
> >> 2) I try the configuration with mysql database and smx 3.1.2 but this
> is
> >> not working. I set the log level
> >> to debug and it seems that smx is blocked trying to aquire a lock on
> the
> >> database. This cause smx not to start.
> >> Any suggestion about this.
> >>
> >
> >
> > You should try with the default ActiveMQ distribution and / or ask on
> the
> > activemq user list.
> >
> >
> >
> >> Andrea Zoppello
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
>
>


-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/

Re: Some question about queue persistence.

Posted by Andrea Zoppello <zo...@tiscali.it>.
Hi Guillaume,

Thanks for the response.

BTW In my previous post i've say something wrong.

If i configure the activemq persistence like:

<amq:persistenceAdapter>
     <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
</amq:persistenceAdapter>


and then after running some processes, i stop smx and i look to
derby database i don't find any message in the queue.

I think this was enough, but it seems i was missing something.

The solution to register a custom listener enabling the persistence by 
setting the property
on the message seems to fit my need, so i think i'll adopt this solution.

Btw, if i really understand well, it seems that i can enable persistence 
of only * Lightweigth
Endpoint* is this right?

If i want to persist all messages, which is the right way to configure 
persistence on the
broker.

Andrea Zoppello

Guillaume Nodet ha scritto:
> On Nov 22, 2007 4:41 PM, Andrea Zoppello <zo...@tiscali.it> wrote:
>
>   
>> Hi all,
>>
>> I'm trying to configure servicemix to use the activemq persistence of
>> message so i add this:
>> configuration:
>>
>> <amq:persistenceAdapter>
>>      <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
>> </amq:persistenceAdapter>
>>
>> This seems to work.
>>
>> BTW I've two question:
>>
>> 1) In smx there's a queue for each jbi endpoint. The question is if i've
>> a sa composed of three
>> endpoint Ep1->Ep2->Ep3 it's possible to make persistent only the message
>> of the queue related to EP1 ?
>>     
>
>
> Persistence is defined on a per message level, but it's kinda hard to
> configure.
> The NMR will check if persistence is enabled at three different levels: on
> the message  by looking for a given property on the exchange (
> org.apache.servicemix.persistent), on the endpoint by looking at the
> corresponding activationSpec (so it does not really fit well with non
> lightweight components) and on the broker.  I suppose the way you could
> change that is by registering a listener on the container, filter the
> exchanges you want and put the property on it.
>
>
>   
>> 2) I try the configuration with mysql database and smx 3.1.2 but this is
>> not working. I set the log level
>> to debug and it seems that smx is blocked trying to aquire a lock on the
>> database. This cause smx not to start.
>> Any suggestion about this.
>>     
>
>
> You should try with the default ActiveMQ distribution and / or ask on the
> activemq user list.
>
>
>   
>> Andrea Zoppello
>>
>>
>>
>>
>>
>>
>>     
>
>
>   


Re: Some question about queue persistence.

Posted by Guillaume Nodet <gn...@gmail.com>.
On Nov 22, 2007 4:41 PM, Andrea Zoppello <zo...@tiscali.it> wrote:

> Hi all,
>
> I'm trying to configure servicemix to use the activemq persistence of
> message so i add this:
> configuration:
>
> <amq:persistenceAdapter>
>      <amq:jdbcPersistenceAdapter dataSource="#derby-ds"/>
> </amq:persistenceAdapter>
>
> This seems to work.
>
> BTW I've two question:
>
> 1) In smx there's a queue for each jbi endpoint. The question is if i've
> a sa composed of three
> endpoint Ep1->Ep2->Ep3 it's possible to make persistent only the message
> of the queue related to EP1 ?


Persistence is defined on a per message level, but it's kinda hard to
configure.
The NMR will check if persistence is enabled at three different levels: on
the message  by looking for a given property on the exchange (
org.apache.servicemix.persistent), on the endpoint by looking at the
corresponding activationSpec (so it does not really fit well with non
lightweight components) and on the broker.  I suppose the way you could
change that is by registering a listener on the container, filter the
exchanges you want and put the property on it.


>
>
> 2) I try the configuration with mysql database and smx 3.1.2 but this is
> not working. I set the log level
> to debug and it seems that smx is blocked trying to aquire a lock on the
> database. This cause smx not to start.
> Any suggestion about this.


You should try with the default ActiveMQ distribution and / or ask on the
activemq user list.


>
>
> Andrea Zoppello
>
>
>
>
>
>


-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/