[rabbitmq-discuss] how to consume one message at a time

Scott Brooks scott.brooks at epicadvertising.com
Tue Nov 17 04:44:52 GMT 2009


Then adjusting the prefetch(part of basic.qos) is probably what you want.  If you set the prefetch to 1, and subscribe with ack's turned on, then you will only get the next message after you ack the previous one.

Hopefully that works for you.  Again, I'm not sure what the .net way to specify that is though.

Scott

On 2009-11-16, at 10:42 PM, JD Conley wrote:

Thanks Scott. But I do want to subscribe/consume (I think), as it is unknown whether there will be any data in the queue, and I want to be notified immediately when there is. I don't really want to poll rabbit using a basic.get and would rather be notified asynchronously when new items are in the queue. I have hundreds (thousands soon) of queues waiting for data across a cluster and the polling overhead would be higher than I want it to be.

-JD

----- Original Message -----
From: "Scott Brooks" <scott.brooks at epicadvertising.com<mailto:scott.brooks at epicadvertising.com>>
To: "JD Conley" <jdc at hive7.com<mailto:jdc at hive7.com>>
Cc: rabbitmq-discuss at lists.rabbitmq.com<mailto:rabbitmq-discuss at lists.rabbitmq.com>
Sent: Monday, November 16, 2009 6:59:35 PM GMT -08:00 US/Canada Pacific
Subject: Re: [rabbitmq-discuss] how to consume one message at a time

I'm not sure what the .NET api looks like, but you want to do a basic get, rather then a basic subscribe.

It will return a single message from the queue, and then when you call it again, you will get the next message(or null/something similar)

Scott

On 2009-11-16, at 5:41 PM, JD Conley wrote:

> I'm using the .NET client and can't figure out how to consume only one
> message at a time. Basically I would like to simply:
>
> 1. Consume one message from a queue
> 2. Cancel consumption so I don't lose any messages
>
> My confusion comes with the statement in the user guide that "Application
> callback handlers must not invoke blocking AMQP operations (such as
> IModel.QueueDeclare or IModel.BasicCancel). If they do, the channel will
> deadlock." But, a BasicCancel is precisely what I want to do in the
> callback.
>
> I want to use the EventingBasicConsumer. What would be the best way to
> accomplish this? Which options do I set?
>
> -JD
>
>
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-discuss at lists.rabbitmq.com<mailto:rabbitmq-discuss at lists.rabbitmq.com>
> http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20091116/211f1c60/attachment.htm 


More information about the rabbitmq-discuss mailing list