Yes.

consumer:

if (queue.pop() == false && lastReceived > timeout)
{
     delete(queue);
}

But between the pop and the delete, a message is added to the queue.
This is possible, right?

Adam


On Tue, Dec 30, 2008 at 9:58 PM, Carl Trieloff <cctriel...@redhat.com> wrote:
> Adam Chase wrote:
>>
>> Premature sending (sorry) (the tab key killed me)
>>
>> So I have a system where I have groups of messages that need to be
>> accumulated and then processed exclusively.  I might get a message for
>> any group at any time.  The space of possible groups is quite large,
>> but at any time I expect there will be a reasonable number of groups
>> active.
>>
>> My plan was:
>>
>> produce(group, job)
>> {
>>      query_queue(group) //to see if it exists
>>      if (exists)
>>           send_message(group)
>>      else
>>           declare_queue(group, exclusive)
>>           send_message(group)
>>           send_message(queues_to_process, group)
>>
>> }
>>
>> consume()
>> {
>>      queueName = queue.receive(queues_to_process)
>>      queue.subscribe(queueName)
>>      queue.receive(queueName) //to get a bunch of messages
>>
>>      //later when the queue has been idle (for a while)
>>      queue_delete(queueName)
>>
>> }
>>
>> Not sure if I've explained myself well here or not, but my question is
>> 1) Is there a better way to accomplish this sort of thing and 2) can
>> you think of a way around the race condition between queue_query and
>> queue_delete?  Does the alternate_exchange setting help any?
>>
>> Thanks,
>>
>> Adam
>>
>
> Are you trying/wanting to make sure messages are not sent a queue that is
> going to be deleted?
>
> Carl.
>
>
>
>

Reply via email to