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 <
nospam.1.friedbad...@spamgourmet.com> wrote:

> On Tue, 9 Jun 2015 10:31:02 -0400, Christopher Shannon
> <christopher.l.shan...@gmail.com> 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 <
> >nospam.1.friedbad...@spamgourmet.com> wrote:
> >
> >> On Tue, 9 Jun 2015 07:29:16 -0600, Tim Bain
> >> <tb...@alumni.duke.edu> 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 <
> >> >nospam.1.friedbad...@spamgourmet.com> wrote:
> >> >
> >> >> On Tue, 9 Jun 2015 06:43:45 -0600, Tim Bain
> >> >> <tb...@alumni.duke.edu> 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" <
> >> nospam.1.friedbad...@spamgourmet.com>
> >> >> >wrote:
> >> >> >
> >> >> >> On Tue, 9 Jun 2015 07:24:24 -0400, Christopher Shannon
> >> >> >> <christopher.l.shan...@gmail.com> 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 <
> >> >> >> >nospam.1.friedbad...@spamgourmet.com> 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 via email to