On Wed, 10 Jun 2015 12:32:00 -0400, Christopher Shannon <christopher.l.shan...@gmail.com> 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 < >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. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>