Allowing another consumer to have a message (ActiveMQ-CPP)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
21 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
Hi,

In some cases we want to allow another consumer to consumer a message
that has already been consumed.   The session is opened using
INDIVIDUAL_ACKNOWLEDGE and the message has not been acknowledged.  I
have tried closing the session where the message has been consumed but
the message is not available to the other consumer.  How can I achieve
what I need?

TIA.


Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

christopher.l.shannon
The use case you are trying to achieve is probably best done by using a
transaction instead of individual acknowledgements.  If you call rollback
on the session then the message would be available to be redelivered to
another consumer.


On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
[hidden email]> wrote:

> Hi,
>
> In some cases we want to allow another consumer to consumer a message
> that has already been consumed.   The session is opened using
> INDIVIDUAL_ACKNOWLEDGE and the message has not been acknowledged.  I
> have tried closing the session where the message has been consumed but
> the message is not available to the other consumer.  How can I achieve
> what I need?
>
> TIA.
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
<[hidden email]> wrote:

>The use case you are trying to achieve is probably best done by using a
>transaction instead of individual acknowledgements.  If you call rollback
>on the session then the message would be available to be redelivered to
>another consumer.

I don't think I can use a transaction because all messages are
committed at once.  We need to be able to select which messages may be
redelivered and which not, hence the individual acknowledge mode is
used.

Will the rollback work with individual acknowledgements?


>
>On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
>[hidden email]> wrote:
>
>> Hi,
>>
>> In some cases we want to allow another consumer to consumer a message
>> that has already been consumed.   The session is opened using
>> INDIVIDUAL_ACKNOWLEDGE and the message has not been acknowledged.  I
>> have tried closing the session where the message has been consumed but
>> the message is not available to the other consumer.  How can I achieve
>> what I need?
>>
>> TIA.
>>
>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

Tim Bain
In this scenario, do you want to consume it twice, or do you really want to
consume it once but you're picking which consumer gets it?  If the latter,
can you use selectors to make sure the right consumer gets the right
messages?  Or maybe an embedded Camel route to send those messages to a
queue that's specific to the consumer that should get them?
On Jun 9, 2015 6:00 AM, "spamtrap" <[hidden email]>
wrote:

> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
> <[hidden email]> wrote:
>
> >The use case you are trying to achieve is probably best done by using a
> >transaction instead of individual acknowledgements.  If you call rollback
> >on the session then the message would be available to be redelivered to
> >another consumer.
>
> I don't think I can use a transaction because all messages are
> committed at once.  We need to be able to select which messages may be
> redelivered and which not, hence the individual acknowledge mode is
> used.
>
> Will the rollback work with individual acknowledgements?
>
>
> >
> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
> >[hidden email]> wrote:
> >
> >> Hi,
> >>
> >> In some cases we want to allow another consumer to consumer a message
> >> that has already been consumed.   The session is opened using
> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been acknowledged.  I
> >> have tried closing the session where the message has been consumed but
> >> the message is not available to the other consumer.  How can I achieve
> >> what I need?
> >>
> >> TIA.
> >>
> >>
> >>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
<[hidden email]> wrote:

The situation is that the consumer gets a message from a queue and
then converts into into a different format and sends it to an
application server, which should respond with an acknowledgement
message.  If the application server does not respond to a particular
message then we want to be able to allow another ActiveMQ consumer to
pick up the message and send it elsewhere.  Any consumer should be
able to process the message so we don't want to use selectors.

>In this scenario, do you want to consume it twice, or do you really want to
>consume it once but you're picking which consumer gets it?  If the latter,
>can you use selectors to make sure the right consumer gets the right
>messages?  Or maybe an embedded Camel route to send those messages to a
>queue that's specific to the consumer that should get them?
>On Jun 9, 2015 6:00 AM, "spamtrap" <[hidden email]>
>wrote:
>
>> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
>> <[hidden email]> wrote:
>>
>> >The use case you are trying to achieve is probably best done by using a
>> >transaction instead of individual acknowledgements.  If you call rollback
>> >on the session then the message would be available to be redelivered to
>> >another consumer.
>>
>> I don't think I can use a transaction because all messages are
>> committed at once.  We need to be able to select which messages may be
>> redelivered and which not, hence the individual acknowledge mode is
>> used.
>>
>> Will the rollback work with individual acknowledgements?
>>
>>
>> >
>> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
>> >[hidden email]> wrote:
>> >
>> >> Hi,
>> >>
>> >> In some cases we want to allow another consumer to consumer a message
>> >> that has already been consumed.   The session is opened using
>> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been acknowledged.  I
>> >> have tried closing the session where the message has been consumed but
>> >> the message is not available to the other consumer.  How can I achieve
>> >> what I need?
>> >>
>> >> TIA.
>> >>
>> >>
>> >>
>>
>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

Tim Bain
So why can't you use transactions?  Won't you get what you want if you
commit the transaction after every successful message and
rollback()/close() and then reconnect after every failed one?

Also is the app server going to fail to respond to *certain* messages, or
is it going to fail to respond to *any* messages?  If the latter, you can
delay the reconnect till you figure out that the web service is available
again.

On Tue, Jun 9, 2015 at 7:09 AM, spamtrap <
[hidden email]> wrote:

> On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
> <[hidden email]> wrote:
>
> The situation is that the consumer gets a message from a queue and
> then converts into into a different format and sends it to an
> application server, which should respond with an acknowledgement
> message.  If the application server does not respond to a particular
> message then we want to be able to allow another ActiveMQ consumer to
> pick up the message and send it elsewhere.  Any consumer should be
> able to process the message so we don't want to use selectors.
>
> >In this scenario, do you want to consume it twice, or do you really want
> to
> >consume it once but you're picking which consumer gets it?  If the latter,
> >can you use selectors to make sure the right consumer gets the right
> >messages?  Or maybe an embedded Camel route to send those messages to a
> >queue that's specific to the consumer that should get them?
> >On Jun 9, 2015 6:00 AM, "spamtrap" <[hidden email]>
> >wrote:
> >
> >> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
> >> <[hidden email]> wrote:
> >>
> >> >The use case you are trying to achieve is probably best done by using a
> >> >transaction instead of individual acknowledgements.  If you call
> rollback
> >> >on the session then the message would be available to be redelivered to
> >> >another consumer.
> >>
> >> I don't think I can use a transaction because all messages are
> >> committed at once.  We need to be able to select which messages may be
> >> redelivered and which not, hence the individual acknowledge mode is
> >> used.
> >>
> >> Will the rollback work with individual acknowledgements?
> >>
> >>
> >> >
> >> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
> >> >[hidden email]> wrote:
> >> >
> >> >> Hi,
> >> >>
> >> >> In some cases we want to allow another consumer to consumer a message
> >> >> that has already been consumed.   The session is opened using
> >> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been acknowledged.  I
> >> >> have tried closing the session where the message has been consumed
> but
> >> >> the message is not available to the other consumer.  How can I
> achieve
> >> >> what I need?
> >> >>
> >> >> TIA.
> >> >>
> >> >>
> >> >>
> >>
> >>
> >>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
On Tue, 9 Jun 2015 07:29:16 -0600, Tim Bain
<[hidden email]> wrote:

>So why can't you use transactions?  Won't you get what you want if you
>commit the transaction after every successful message and
>rollback()/close() and then reconnect after every failed one?

No.  It may take some time to process a message so we operate a
'window'.  Therefore there would normally be more than one message
outstanding.

>Also is the app server going to fail to respond to *certain* messages, or
>is it going to fail to respond to *any* messages?  If the latter, you can
>delay the reconnect till you figure out that the web service is available
>again.

We have to assume it may fail to respond to certain messages.

>On Tue, Jun 9, 2015 at 7:09 AM, spamtrap <
>[hidden email]> wrote:
>
>> On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
>> <[hidden email]> wrote:
>>
>> The situation is that the consumer gets a message from a queue and
>> then converts into into a different format and sends it to an
>> application server, which should respond with an acknowledgement
>> message.  If the application server does not respond to a particular
>> message then we want to be able to allow another ActiveMQ consumer to
>> pick up the message and send it elsewhere.  Any consumer should be
>> able to process the message so we don't want to use selectors.
>>
>> >In this scenario, do you want to consume it twice, or do you really want
>> to
>> >consume it once but you're picking which consumer gets it?  If the latter,
>> >can you use selectors to make sure the right consumer gets the right
>> >messages?  Or maybe an embedded Camel route to send those messages to a
>> >queue that's specific to the consumer that should get them?
>> >On Jun 9, 2015 6:00 AM, "spamtrap" <[hidden email]>
>> >wrote:
>> >
>> >> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
>> >> <[hidden email]> wrote:
>> >>
>> >> >The use case you are trying to achieve is probably best done by using a
>> >> >transaction instead of individual acknowledgements.  If you call
>> rollback
>> >> >on the session then the message would be available to be redelivered to
>> >> >another consumer.
>> >>
>> >> I don't think I can use a transaction because all messages are
>> >> committed at once.  We need to be able to select which messages may be
>> >> redelivered and which not, hence the individual acknowledge mode is
>> >> used.
>> >>
>> >> Will the rollback work with individual acknowledgements?
>> >>
>> >>
>> >> >
>> >> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
>> >> >[hidden email]> wrote:
>> >> >
>> >> >> Hi,
>> >> >>
>> >> >> In some cases we want to allow another consumer to consumer a message
>> >> >> that has already been consumed.   The session is opened using
>> >> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been acknowledged.  I
>> >> >> have tried closing the session where the message has been consumed
>> but
>> >> >> the message is not available to the other consumer.  How can I
>> achieve
>> >> >> what I need?
>> >> >>
>> >> >> TIA.
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >>
>>
>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

christopher.l.shannon
I think the only way you are going to be able to achieve what you want is
by doing what Tim mentioned....using a transaction where you
commit/rollback after each message.  Since processing a message could take
a while, you could increase the number of consumers to increase throughput.


Take a look at the documentation here:
http://activemq.apache.org/message-redelivery-and-dlq-handling.html for
more info on how messages can be redelivered.

On Tue, Jun 9, 2015 at 9:51 AM, spamtrap <
[hidden email]> wrote:

> On Tue, 9 Jun 2015 07:29:16 -0600, Tim Bain
> <[hidden email]> wrote:
>
> >So why can't you use transactions?  Won't you get what you want if you
> >commit the transaction after every successful message and
> >rollback()/close() and then reconnect after every failed one?
>
> No.  It may take some time to process a message so we operate a
> 'window'.  Therefore there would normally be more than one message
> outstanding.
>
> >Also is the app server going to fail to respond to *certain* messages, or
> >is it going to fail to respond to *any* messages?  If the latter, you can
> >delay the reconnect till you figure out that the web service is available
> >again.
>
> We have to assume it may fail to respond to certain messages.
>
> >On Tue, Jun 9, 2015 at 7:09 AM, spamtrap <
> >[hidden email]> wrote:
> >
> >> On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
> >> <[hidden email]> wrote:
> >>
> >> The situation is that the consumer gets a message from a queue and
> >> then converts into into a different format and sends it to an
> >> application server, which should respond with an acknowledgement
> >> message.  If the application server does not respond to a particular
> >> message then we want to be able to allow another ActiveMQ consumer to
> >> pick up the message and send it elsewhere.  Any consumer should be
> >> able to process the message so we don't want to use selectors.
> >>
> >> >In this scenario, do you want to consume it twice, or do you really
> want
> >> to
> >> >consume it once but you're picking which consumer gets it?  If the
> latter,
> >> >can you use selectors to make sure the right consumer gets the right
> >> >messages?  Or maybe an embedded Camel route to send those messages to a
> >> >queue that's specific to the consumer that should get them?
> >> >On Jun 9, 2015 6:00 AM, "spamtrap" <
> [hidden email]>
> >> >wrote:
> >> >
> >> >> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
> >> >> <[hidden email]> wrote:
> >> >>
> >> >> >The use case you are trying to achieve is probably best done by
> using a
> >> >> >transaction instead of individual acknowledgements.  If you call
> >> rollback
> >> >> >on the session then the message would be available to be
> redelivered to
> >> >> >another consumer.
> >> >>
> >> >> I don't think I can use a transaction because all messages are
> >> >> committed at once.  We need to be able to select which messages may
> be
> >> >> redelivered and which not, hence the individual acknowledge mode is
> >> >> used.
> >> >>
> >> >> Will the rollback work with individual acknowledgements?
> >> >>
> >> >>
> >> >> >
> >> >> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
> >> >> >[hidden email]> wrote:
> >> >> >
> >> >> >> Hi,
> >> >> >>
> >> >> >> In some cases we want to allow another consumer to consumer a
> message
> >> >> >> that has already been consumed.   The session is opened using
> >> >> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been
> acknowledged.  I
> >> >> >> have tried closing the session where the message has been consumed
> >> but
> >> >> >> the message is not available to the other consumer.  How can I
> >> achieve
> >> >> >> what I need?
> >> >> >>
> >> >> >> TIA.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >>
> >> >>
> >> >>
> >>
> >>
> >>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
On Tue, 9 Jun 2015 10:31:02 -0400, Christopher Shannon
<[hidden email]> wrote:

OK.  Thanks.

Now I am looking at the case where we want messages to be redelivered
to the same consumer (assume there is only one consumer of a queue). I
have tried stopping and restarting the session and consumer objects
but not all messages are redelivered.

The following article seems to suggest that you must close the
consumer object
(http://activemq.apache.org/what-is-the-prefetch-limit-for.html)
but if I try this and then attempt to restart it, no messages are
consumed at all, even new ones.

How can I achieve the latter?  Do I need to destroy and recreate the
consumer object, for example?

>I think the only way you are going to be able to achieve what you want is
>by doing what Tim mentioned....using a transaction where you
>commit/rollback after each message.  Since processing a message could take
>a while, you could increase the number of consumers to increase throughput.
>
>
>Take a look at the documentation here:
>http://activemq.apache.org/message-redelivery-and-dlq-handling.html for
>more info on how messages can be redelivered.
>
>On Tue, Jun 9, 2015 at 9:51 AM, spamtrap <
>[hidden email]> wrote:
>
>> On Tue, 9 Jun 2015 07:29:16 -0600, Tim Bain
>> <[hidden email]> wrote:
>>
>> >So why can't you use transactions?  Won't you get what you want if you
>> >commit the transaction after every successful message and
>> >rollback()/close() and then reconnect after every failed one?
>>
>> No.  It may take some time to process a message so we operate a
>> 'window'.  Therefore there would normally be more than one message
>> outstanding.
>>
>> >Also is the app server going to fail to respond to *certain* messages, or
>> >is it going to fail to respond to *any* messages?  If the latter, you can
>> >delay the reconnect till you figure out that the web service is available
>> >again.
>>
>> We have to assume it may fail to respond to certain messages.
>>
>> >On Tue, Jun 9, 2015 at 7:09 AM, spamtrap <
>> >[hidden email]> wrote:
>> >
>> >> On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
>> >> <[hidden email]> wrote:
>> >>
>> >> The situation is that the consumer gets a message from a queue and
>> >> then converts into into a different format and sends it to an
>> >> application server, which should respond with an acknowledgement
>> >> message.  If the application server does not respond to a particular
>> >> message then we want to be able to allow another ActiveMQ consumer to
>> >> pick up the message and send it elsewhere.  Any consumer should be
>> >> able to process the message so we don't want to use selectors.
>> >>
>> >> >In this scenario, do you want to consume it twice, or do you really
>> want
>> >> to
>> >> >consume it once but you're picking which consumer gets it?  If the
>> latter,
>> >> >can you use selectors to make sure the right consumer gets the right
>> >> >messages?  Or maybe an embedded Camel route to send those messages to a
>> >> >queue that's specific to the consumer that should get them?
>> >> >On Jun 9, 2015 6:00 AM, "spamtrap" <
>> [hidden email]>
>> >> >wrote:
>> >> >
>> >> >> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
>> >> >> <[hidden email]> wrote:
>> >> >>
>> >> >> >The use case you are trying to achieve is probably best done by
>> using a
>> >> >> >transaction instead of individual acknowledgements.  If you call
>> >> rollback
>> >> >> >on the session then the message would be available to be
>> redelivered to
>> >> >> >another consumer.
>> >> >>
>> >> >> I don't think I can use a transaction because all messages are
>> >> >> committed at once.  We need to be able to select which messages may
>> be
>> >> >> redelivered and which not, hence the individual acknowledge mode is
>> >> >> used.
>> >> >>
>> >> >> Will the rollback work with individual acknowledgements?
>> >> >>
>> >> >>
>> >> >> >
>> >> >> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
>> >> >> >[hidden email]> wrote:
>> >> >> >
>> >> >> >> Hi,
>> >> >> >>
>> >> >> >> In some cases we want to allow another consumer to consumer a
>> message
>> >> >> >> that has already been consumed.   The session is opened using
>> >> >> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been
>> acknowledged.  I
>> >> >> >> have tried closing the session where the message has been consumed
>> >> but
>> >> >> >> the message is not available to the other consumer.  How can I
>> >> achieve
>> >> >> >> what I need?
>> >> >> >>
>> >> >> >> TIA.
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >>
>>
>>
>>

Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

christopher.l.shannon
Yes you should create a new consumer object.  You can certainly reuse
connections and sessions but you will want to call createConsumer() on the
session to get a new consumer if you close the old one.  If you create a
new consumer the you should start receiving messages again.

On Wed, Jun 10, 2015 at 6:44 AM, spam trap <
[hidden email]> wrote:

> On Tue, 9 Jun 2015 10:31:02 -0400, Christopher Shannon
> <[hidden email]> wrote:
>
> OK.  Thanks.
>
> Now I am looking at the case where we want messages to be redelivered
> to the same consumer (assume there is only one consumer of a queue). I
> have tried stopping and restarting the session and consumer objects
> but not all messages are redelivered.
>
> The following article seems to suggest that you must close the
> consumer object
> (http://activemq.apache.org/what-is-the-prefetch-limit-for.html)
> but if I try this and then attempt to restart it, no messages are
> consumed at all, even new ones.
>
> How can I achieve the latter?  Do I need to destroy and recreate the
> consumer object, for example?
>
> >I think the only way you are going to be able to achieve what you want is
> >by doing what Tim mentioned....using a transaction where you
> >commit/rollback after each message.  Since processing a message could take
> >a while, you could increase the number of consumers to increase
> throughput.
> >
> >
> >Take a look at the documentation here:
> >http://activemq.apache.org/message-redelivery-and-dlq-handling.html for
> >more info on how messages can be redelivered.
> >
> >On Tue, Jun 9, 2015 at 9:51 AM, spamtrap <
> >[hidden email]> wrote:
> >
> >> On Tue, 9 Jun 2015 07:29:16 -0600, Tim Bain
> >> <[hidden email]> wrote:
> >>
> >> >So why can't you use transactions?  Won't you get what you want if you
> >> >commit the transaction after every successful message and
> >> >rollback()/close() and then reconnect after every failed one?
> >>
> >> No.  It may take some time to process a message so we operate a
> >> 'window'.  Therefore there would normally be more than one message
> >> outstanding.
> >>
> >> >Also is the app server going to fail to respond to *certain* messages,
> or
> >> >is it going to fail to respond to *any* messages?  If the latter, you
> can
> >> >delay the reconnect till you figure out that the web service is
> available
> >> >again.
> >>
> >> We have to assume it may fail to respond to certain messages.
> >>
> >> >On Tue, Jun 9, 2015 at 7:09 AM, spamtrap <
> >> >[hidden email]> wrote:
> >> >
> >> >> On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
> >> >> <[hidden email]> wrote:
> >> >>
> >> >> The situation is that the consumer gets a message from a queue and
> >> >> then converts into into a different format and sends it to an
> >> >> application server, which should respond with an acknowledgement
> >> >> message.  If the application server does not respond to a particular
> >> >> message then we want to be able to allow another ActiveMQ consumer to
> >> >> pick up the message and send it elsewhere.  Any consumer should be
> >> >> able to process the message so we don't want to use selectors.
> >> >>
> >> >> >In this scenario, do you want to consume it twice, or do you really
> >> want
> >> >> to
> >> >> >consume it once but you're picking which consumer gets it?  If the
> >> latter,
> >> >> >can you use selectors to make sure the right consumer gets the right
> >> >> >messages?  Or maybe an embedded Camel route to send those messages
> to a
> >> >> >queue that's specific to the consumer that should get them?
> >> >> >On Jun 9, 2015 6:00 AM, "spamtrap" <
> >> [hidden email]>
> >> >> >wrote:
> >> >> >
> >> >> >> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
> >> >> >> <[hidden email]> wrote:
> >> >> >>
> >> >> >> >The use case you are trying to achieve is probably best done by
> >> using a
> >> >> >> >transaction instead of individual acknowledgements.  If you call
> >> >> rollback
> >> >> >> >on the session then the message would be available to be
> >> redelivered to
> >> >> >> >another consumer.
> >> >> >>
> >> >> >> I don't think I can use a transaction because all messages are
> >> >> >> committed at once.  We need to be able to select which messages
> may
> >> be
> >> >> >> redelivered and which not, hence the individual acknowledge mode
> is
> >> >> >> used.
> >> >> >>
> >> >> >> Will the rollback work with individual acknowledgements?
> >> >> >>
> >> >> >>
> >> >> >> >
> >> >> >> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
> >> >> >> >[hidden email]> wrote:
> >> >> >> >
> >> >> >> >> Hi,
> >> >> >> >>
> >> >> >> >> In some cases we want to allow another consumer to consumer a
> >> message
> >> >> >> >> that has already been consumed.   The session is opened using
> >> >> >> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been
> >> acknowledged.  I
> >> >> >> >> have tried closing the session where the message has been
> consumed
> >> >> but
> >> >> >> >> the message is not available to the other consumer.  How can I
> >> >> achieve
> >> >> >> >> what I need?
> >> >> >> >>
> >> >> >> >> TIA.
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >>
> >> >>
> >> >>
> >> >>
> >>
> >>
> >>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
On Wed, 10 Jun 2015 12:32:00 -0400, Christopher Shannon
<[hidden email]> wrote:

OK.  I've tried this.  However when I create the new consumer object,
nothing is consumed and I notice that there are no messages in the
queue to consume.

Any ideas why this is happening?

>Yes you should create a new consumer object.  You can certainly reuse
>connections and sessions but you will want to call createConsumer() on the
>session to get a new consumer if you close the old one.  If you create a
>new consumer the you should start receiving messages again.
>
>On Wed, Jun 10, 2015 at 6:44 AM, spam trap <
>[hidden email]> wrote:
>
>> On Tue, 9 Jun 2015 10:31:02 -0400, Christopher Shannon
>> <[hidden email]> wrote:
>>
>> OK.  Thanks.
>>
>> Now I am looking at the case where we want messages to be redelivered
>> to the same consumer (assume there is only one consumer of a queue). I
>> have tried stopping and restarting the session and consumer objects
>> but not all messages are redelivered.
>>
>> The following article seems to suggest that you must close the
>> consumer object
>> (http://activemq.apache.org/what-is-the-prefetch-limit-for.html)
>> but if I try this and then attempt to restart it, no messages are
>> consumed at all, even new ones.
>>
>> How can I achieve the latter?  Do I need to destroy and recreate the
>> consumer object, for example?
>>
>> >I think the only way you are going to be able to achieve what you want is
>> >by doing what Tim mentioned....using a transaction where you
>> >commit/rollback after each message.  Since processing a message could take
>> >a while, you could increase the number of consumers to increase
>> throughput.
>> >
>> >
>> >Take a look at the documentation here:
>> >http://activemq.apache.org/message-redelivery-and-dlq-handling.html for
>> >more info on how messages can be redelivered.
>> >
>> >On Tue, Jun 9, 2015 at 9:51 AM, spamtrap <
>> >[hidden email]> wrote:
>> >
>> >> On Tue, 9 Jun 2015 07:29:16 -0600, Tim Bain
>> >> <[hidden email]> wrote:
>> >>
>> >> >So why can't you use transactions?  Won't you get what you want if you
>> >> >commit the transaction after every successful message and
>> >> >rollback()/close() and then reconnect after every failed one?
>> >>
>> >> No.  It may take some time to process a message so we operate a
>> >> 'window'.  Therefore there would normally be more than one message
>> >> outstanding.
>> >>
>> >> >Also is the app server going to fail to respond to *certain* messages,
>> or
>> >> >is it going to fail to respond to *any* messages?  If the latter, you
>> can
>> >> >delay the reconnect till you figure out that the web service is
>> available
>> >> >again.
>> >>
>> >> We have to assume it may fail to respond to certain messages.
>> >>
>> >> >On Tue, Jun 9, 2015 at 7:09 AM, spamtrap <
>> >> >[hidden email]> wrote:
>> >> >
>> >> >> On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
>> >> >> <[hidden email]> wrote:
>> >> >>
>> >> >> The situation is that the consumer gets a message from a queue and
>> >> >> then converts into into a different format and sends it to an
>> >> >> application server, which should respond with an acknowledgement
>> >> >> message.  If the application server does not respond to a particular
>> >> >> message then we want to be able to allow another ActiveMQ consumer to
>> >> >> pick up the message and send it elsewhere.  Any consumer should be
>> >> >> able to process the message so we don't want to use selectors.
>> >> >>
>> >> >> >In this scenario, do you want to consume it twice, or do you really
>> >> want
>> >> >> to
>> >> >> >consume it once but you're picking which consumer gets it?  If the
>> >> latter,
>> >> >> >can you use selectors to make sure the right consumer gets the right
>> >> >> >messages?  Or maybe an embedded Camel route to send those messages
>> to a
>> >> >> >queue that's specific to the consumer that should get them?
>> >> >> >On Jun 9, 2015 6:00 AM, "spamtrap" <
>> >> [hidden email]>
>> >> >> >wrote:
>> >> >> >
>> >> >> >> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
>> >> >> >> <[hidden email]> wrote:
>> >> >> >>
>> >> >> >> >The use case you are trying to achieve is probably best done by
>> >> using a
>> >> >> >> >transaction instead of individual acknowledgements.  If you call
>> >> >> rollback
>> >> >> >> >on the session then the message would be available to be
>> >> redelivered to
>> >> >> >> >another consumer.
>> >> >> >>
>> >> >> >> I don't think I can use a transaction because all messages are
>> >> >> >> committed at once.  We need to be able to select which messages
>> may
>> >> be
>> >> >> >> redelivered and which not, hence the individual acknowledge mode
>> is
>> >> >> >> used.
>> >> >> >>
>> >> >> >> Will the rollback work with individual acknowledgements?
>> >> >> >>
>> >> >> >>
>> >> >> >> >
>> >> >> >> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
>> >> >> >> >[hidden email]> wrote:
>> >> >> >> >
>> >> >> >> >> Hi,
>> >> >> >> >>
>> >> >> >> >> In some cases we want to allow another consumer to consumer a
>> >> message
>> >> >> >> >> that has already been consumed.   The session is opened using
>> >> >> >> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been
>> >> acknowledged.  I
>> >> >> >> >> have tried closing the session where the message has been
>> consumed
>> >> >> but
>> >> >> >> >> the message is not available to the other consumer.  How can I
>> >> >> achieve
>> >> >> >> >> what I need?
>> >> >> >> >>
>> >> >> >> >> TIA.
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >>
>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

christopher.l.shannon
I'm not sure why there are no messages in the Queue.  If there were
messages on the queue and not acknowledged they should still be there when
you close the consumer.  So I would expect them to be available on
reconnect.

On Thu, Jun 11, 2015 at 4:48 AM, spamtrap <
[hidden email]> wrote:

> On Wed, 10 Jun 2015 12:32:00 -0400, Christopher Shannon
> <[hidden email]> wrote:
>
> OK.  I've tried this.  However when I create the new consumer object,
> nothing is consumed and I notice that there are no messages in the
> queue to consume.
>
> Any ideas why this is happening?
>
> >Yes you should create a new consumer object.  You can certainly reuse
> >connections and sessions but you will want to call createConsumer() on the
> >session to get a new consumer if you close the old one.  If you create a
> >new consumer the you should start receiving messages again.
> >
> >On Wed, Jun 10, 2015 at 6:44 AM, spam trap <
> >[hidden email]> wrote:
> >
> >> On Tue, 9 Jun 2015 10:31:02 -0400, Christopher Shannon
> >> <[hidden email]> wrote:
> >>
> >> OK.  Thanks.
> >>
> >> Now I am looking at the case where we want messages to be redelivered
> >> to the same consumer (assume there is only one consumer of a queue). I
> >> have tried stopping and restarting the session and consumer objects
> >> but not all messages are redelivered.
> >>
> >> The following article seems to suggest that you must close the
> >> consumer object
> >> (http://activemq.apache.org/what-is-the-prefetch-limit-for.html)
> >> but if I try this and then attempt to restart it, no messages are
> >> consumed at all, even new ones.
> >>
> >> How can I achieve the latter?  Do I need to destroy and recreate the
> >> consumer object, for example?
> >>
> >> >I think the only way you are going to be able to achieve what you want
> is
> >> >by doing what Tim mentioned....using a transaction where you
> >> >commit/rollback after each message.  Since processing a message could
> take
> >> >a while, you could increase the number of consumers to increase
> >> throughput.
> >> >
> >> >
> >> >Take a look at the documentation here:
> >> >http://activemq.apache.org/message-redelivery-and-dlq-handling.html
> for
> >> >more info on how messages can be redelivered.
> >> >
> >> >On Tue, Jun 9, 2015 at 9:51 AM, spamtrap <
> >> >[hidden email]> wrote:
> >> >
> >> >> On Tue, 9 Jun 2015 07:29:16 -0600, Tim Bain
> >> >> <[hidden email]> wrote:
> >> >>
> >> >> >So why can't you use transactions?  Won't you get what you want if
> you
> >> >> >commit the transaction after every successful message and
> >> >> >rollback()/close() and then reconnect after every failed one?
> >> >>
> >> >> No.  It may take some time to process a message so we operate a
> >> >> 'window'.  Therefore there would normally be more than one message
> >> >> outstanding.
> >> >>
> >> >> >Also is the app server going to fail to respond to *certain*
> messages,
> >> or
> >> >> >is it going to fail to respond to *any* messages?  If the latter,
> you
> >> can
> >> >> >delay the reconnect till you figure out that the web service is
> >> available
> >> >> >again.
> >> >>
> >> >> We have to assume it may fail to respond to certain messages.
> >> >>
> >> >> >On Tue, Jun 9, 2015 at 7:09 AM, spamtrap <
> >> >> >[hidden email]> wrote:
> >> >> >
> >> >> >> On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
> >> >> >> <[hidden email]> wrote:
> >> >> >>
> >> >> >> The situation is that the consumer gets a message from a queue and
> >> >> >> then converts into into a different format and sends it to an
> >> >> >> application server, which should respond with an acknowledgement
> >> >> >> message.  If the application server does not respond to a
> particular
> >> >> >> message then we want to be able to allow another ActiveMQ
> consumer to
> >> >> >> pick up the message and send it elsewhere.  Any consumer should be
> >> >> >> able to process the message so we don't want to use selectors.
> >> >> >>
> >> >> >> >In this scenario, do you want to consume it twice, or do you
> really
> >> >> want
> >> >> >> to
> >> >> >> >consume it once but you're picking which consumer gets it?  If
> the
> >> >> latter,
> >> >> >> >can you use selectors to make sure the right consumer gets the
> right
> >> >> >> >messages?  Or maybe an embedded Camel route to send those
> messages
> >> to a
> >> >> >> >queue that's specific to the consumer that should get them?
> >> >> >> >On Jun 9, 2015 6:00 AM, "spamtrap" <
> >> >> [hidden email]>
> >> >> >> >wrote:
> >> >> >> >
> >> >> >> >> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
> >> >> >> >> <[hidden email]> wrote:
> >> >> >> >>
> >> >> >> >> >The use case you are trying to achieve is probably best done
> by
> >> >> using a
> >> >> >> >> >transaction instead of individual acknowledgements.  If you
> call
> >> >> >> rollback
> >> >> >> >> >on the session then the message would be available to be
> >> >> redelivered to
> >> >> >> >> >another consumer.
> >> >> >> >>
> >> >> >> >> I don't think I can use a transaction because all messages are
> >> >> >> >> committed at once.  We need to be able to select which messages
> >> may
> >> >> be
> >> >> >> >> redelivered and which not, hence the individual acknowledge
> mode
> >> is
> >> >> >> >> used.
> >> >> >> >>
> >> >> >> >> Will the rollback work with individual acknowledgements?
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> >
> >> >> >> >> >On Tue, Jun 9, 2015 at 3:50 AM, spamtrap <
> >> >> >> >> >[hidden email]> wrote:
> >> >> >> >> >
> >> >> >> >> >> Hi,
> >> >> >> >> >>
> >> >> >> >> >> In some cases we want to allow another consumer to consumer
> a
> >> >> message
> >> >> >> >> >> that has already been consumed.   The session is opened
> using
> >> >> >> >> >> INDIVIDUAL_ACKNOWLEDGE and the message has not been
> >> >> acknowledged.  I
> >> >> >> >> >> have tried closing the session where the message has been
> >> consumed
> >> >> >> but
> >> >> >> >> >> the message is not available to the other consumer.  How
> can I
> >> >> >> achieve
> >> >> >> >> >> what I need?
> >> >> >> >> >>
> >> >> >> >> >> TIA.
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >>
> >> >>
> >> >>
> >> >>
> >>
> >>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

Tim Bain
Confirm that step by step.  Are the messages still on the broker when the
transaction rolls back?  Are they still on the broker when the client
disconnects?  Wherever you lose them, the previous step is the one to
investigate.
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
On Thu, 11 Jun 2015 14:01:16 -0600, Tim Bain
<[hidden email]> wrote:

>Confirm that step by step.  Are the messages still on the broker when the
>transaction rolls back?  Are they still on the broker when the client
>disconnects?  Wherever you lose them, the previous step is the one to
>investigate.

I've now done this.  The message is still there when the transaction
rolls and and the broker disconnects.  It is still there when the
client disconnects.  It is still there when I create a new consumer.
It 'disappears' when I restart the session.  In the broker log I can
see an Acknowledgement at this time, but it wasn't done by me.


Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

Tim Bain
Does restarting the session mean creating a new session object, or calling
start() on the current one after calling stop()?  Is the behavior the same
if you do it the other way?
On Jun 12, 2015 4:30 AM, "spamtrap" <[hidden email]>
wrote:

> On Thu, 11 Jun 2015 14:01:16 -0600, Tim Bain
> <[hidden email]> wrote:
>
> >Confirm that step by step.  Are the messages still on the broker when the
> >transaction rolls back?  Are they still on the broker when the client
> >disconnects?  Wherever you lose them, the previous step is the one to
> >investigate.
>
> I've now done this.  The message is still there when the transaction
> rolls and and the broker disconnects.  It is still there when the
> client disconnects.  It is still there when I create a new consumer.
> It 'disappears' when I restart the session.  In the broker log I can
> see an Acknowledgement at this time, but it wasn't done by me.
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
On Fri, 12 Jun 2015 06:56:42 -0600, Tim Bain
<[hidden email]> wrote:

I was calling session.start() after calling session.stop().

If I change it to deleting and re-creating a session object the
message still disappears, but this time when I re-create the consumer
object (i.e. not when the session starts).

>Does restarting the session mean creating a new session object, or calling
>start() on the current one after calling stop()?  Is the behavior the same
>if you do it the other way?
>On Jun 12, 2015 4:30 AM, "spamtrap" <[hidden email]>
>wrote:
>
>> On Thu, 11 Jun 2015 14:01:16 -0600, Tim Bain
>> <[hidden email]> wrote:
>>
>> >Confirm that step by step.  Are the messages still on the broker when the
>> >transaction rolls back?  Are they still on the broker when the client
>> >disconnects?  Wherever you lose them, the previous step is the one to
>> >investigate.
>>
>> I've now done this.  The message is still there when the transaction
>> rolls and and the broker disconnects.  It is still there when the
>> client disconnects.  It is still there when I create a new consumer.
>> It 'disappears' when I restart the session.  In the broker log I can
>> see an Acknowledgement at this time, but it wasn't done by me.
>>
>>
>>


Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

Tim Bain
It sounds like you can reproduce this reliably; can you submit a bug report
in JIRA and attach the client code and broker config that produce the
behavior?  (The simpler the better; do your best to cut out anything that
isn't necessary to show the problem.)

If you want to trace the code yourself and figure out why it's doing what
it's doing, that would be great (and it'll be the fastest way to get
yourself a fix).  If not, you'll wait till someone feels like
investigating, whoever and whenever that might be.
On Jun 12, 2015 7:20 AM, "spamtrap" <[hidden email]>
wrote:

> On Fri, 12 Jun 2015 06:56:42 -0600, Tim Bain
> <[hidden email]> wrote:
>
> I was calling session.start() after calling session.stop().
>
> If I change it to deleting and re-creating a session object the
> message still disappears, but this time when I re-create the consumer
> object (i.e. not when the session starts).
>
> >Does restarting the session mean creating a new session object, or calling
> >start() on the current one after calling stop()?  Is the behavior the same
> >if you do it the other way?
> >On Jun 12, 2015 4:30 AM, "spamtrap" <[hidden email]
> >
> >wrote:
> >
> >> On Thu, 11 Jun 2015 14:01:16 -0600, Tim Bain
> >> <[hidden email]> wrote:
> >>
> >> >Confirm that step by step.  Are the messages still on the broker when
> the
> >> >transaction rolls back?  Are they still on the broker when the client
> >> >disconnects?  Wherever you lose them, the previous step is the one to
> >> >investigate.
> >>
> >> I've now done this.  The message is still there when the transaction
> >> rolls and and the broker disconnects.  It is still there when the
> >> client disconnects.  It is still there when I create a new consumer.
> >> It 'disappears' when I restart the session.  In the broker log I can
> >> see an Acknowledgement at this time, but it wasn't done by me.
> >>
> >>
> >>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
On Fri, 12 Jun 2015 16:08:05 -0600, Tim Bain
<[hidden email]> wrote:

Just to be 100% clear what should the behaviour be if I use
INDIVIDUAL_ACKNOWLEDGE (vs SESSION_TRANSACTED) and have not
acknowledged the message?

>It sounds like you can reproduce this reliably; can you submit a bug report
>in JIRA and attach the client code and broker config that produce the
>behavior?  (The simpler the better; do your best to cut out anything that
>isn't necessary to show the problem.)
>
>If you want to trace the code yourself and figure out why it's doing what
>it's doing, that would be great (and it'll be the fastest way to get
>yourself a fix).  If not, you'll wait till someone feels like
>investigating, whoever and whenever that might be.
>On Jun 12, 2015 7:20 AM, "spamtrap" <[hidden email]>
>wrote:
>
>> On Fri, 12 Jun 2015 06:56:42 -0600, Tim Bain
>> <[hidden email]> wrote:
>>
>> I was calling session.start() after calling session.stop().
>>
>> If I change it to deleting and re-creating a session object the
>> message still disappears, but this time when I re-create the consumer
>> object (i.e. not when the session starts).
>>
>> >Does restarting the session mean creating a new session object, or calling
>> >start() on the current one after calling stop()?  Is the behavior the same
>> >if you do it the other way?
>> >On Jun 12, 2015 4:30 AM, "spamtrap" <[hidden email]
>> >
>> >wrote:
>> >
>> >> On Thu, 11 Jun 2015 14:01:16 -0600, Tim Bain
>> >> <[hidden email]> wrote:
>> >>
>> >> >Confirm that step by step.  Are the messages still on the broker when
>> the
>> >> >transaction rolls back?  Are they still on the broker when the client
>> >> >disconnects?  Wherever you lose them, the previous step is the one to
>> >> >investigate.
>> >>
>> >> I've now done this.  The message is still there when the transaction
>> >> rolls and and the broker disconnects.  It is still there when the
>> >> client disconnects.  It is still there when I create a new consumer.
>> >> It 'disappears' when I restart the session.  In the broker log I can
>> >> see an Acknowledgement at this time, but it wasn't done by me.
>> >>
>> >>
>> >>
>>
>>
>>

Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

christopher.l.shannon
With individual acknowledgement, if you don't acknowledge the message it
will be kept on the broker and tracked until you either acknowledge it or
close the consumer.  If you close the consumer it should be redelivered to
another consumer.

With transactions you need to explicitly call commit or rollback.  If you
call commit on the consumer the message or messages will be acknowledged.
If you call rollback, then the message or messages that were received since
the last call of commit will be redelivered.

Here is some info on how transactions work:
http://activemq.apache.org/how-do-transactions-work.html


On Mon, Jun 15, 2015 at 4:50 AM, spam trap <
[hidden email]> wrote:

> On Fri, 12 Jun 2015 16:08:05 -0600, Tim Bain
> <[hidden email]> wrote:
>
> Just to be 100% clear what should the behaviour be if I use
> INDIVIDUAL_ACKNOWLEDGE (vs SESSION_TRANSACTED) and have not
> acknowledged the message?
>
> >It sounds like you can reproduce this reliably; can you submit a bug
> report
> >in JIRA and attach the client code and broker config that produce the
> >behavior?  (The simpler the better; do your best to cut out anything that
> >isn't necessary to show the problem.)
> >
> >If you want to trace the code yourself and figure out why it's doing what
> >it's doing, that would be great (and it'll be the fastest way to get
> >yourself a fix).  If not, you'll wait till someone feels like
> >investigating, whoever and whenever that might be.
> >On Jun 12, 2015 7:20 AM, "spamtrap" <[hidden email]
> >
> >wrote:
> >
> >> On Fri, 12 Jun 2015 06:56:42 -0600, Tim Bain
> >> <[hidden email]> wrote:
> >>
> >> I was calling session.start() after calling session.stop().
> >>
> >> If I change it to deleting and re-creating a session object the
> >> message still disappears, but this time when I re-create the consumer
> >> object (i.e. not when the session starts).
> >>
> >> >Does restarting the session mean creating a new session object, or
> calling
> >> >start() on the current one after calling stop()?  Is the behavior the
> same
> >> >if you do it the other way?
> >> >On Jun 12, 2015 4:30 AM, "spamtrap" <
> [hidden email]
> >> >
> >> >wrote:
> >> >
> >> >> On Thu, 11 Jun 2015 14:01:16 -0600, Tim Bain
> >> >> <[hidden email]> wrote:
> >> >>
> >> >> >Confirm that step by step.  Are the messages still on the broker
> when
> >> the
> >> >> >transaction rolls back?  Are they still on the broker when the
> client
> >> >> >disconnects?  Wherever you lose them, the previous step is the one
> to
> >> >> >investigate.
> >> >>
> >> >> I've now done this.  The message is still there when the transaction
> >> >> rolls and and the broker disconnects.  It is still there when the
> >> >> client disconnects.  It is still there when I create a new consumer.
> >> >> It 'disappears' when I restart the session.  In the broker log I can
> >> >> see an Acknowledgement at this time, but it wasn't done by me.
> >> >>
> >> >>
> >> >>
> >>
> >>
> >>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Allowing another consumer to have a message (ActiveMQ-CPP)

spamtrap
In reply to this post by spamtrap
On Tue, 09 Jun 2015 08:50:58 +0100, spamtrap
<[hidden email]> wrote:

>Hi,
>
>In some cases we want to allow another consumer to consumer a message
>that has already been consumed.   The session is opened using
>INDIVIDUAL_ACKNOWLEDGE and the message has not been acknowledged.  I
>have tried closing the session where the message has been consumed but
>the message is not available to the other consumer.  How can I achieve
>what I need?

Update:
Further testing has revealed that the problem occurs with the failover
transport and not with the plain tcp transport.

There is a jira issue on this: AMQCPP-571.


12