Hi!

I have the following use case:

*Wait for a free resource
*When resource is free, wait for next job, then use resource to process job.

So, i need to wait until there is BOTH a resource and a job available. All 
resources are equal, so I can use any resource with any job. 

What's the best way of accomplishing this?

My current (flawed?) implementation is as follows:

I'm putting the resources in one queue as they become available, and then I 
have an MDB registered for that queue (P2P).

The job queue is a separate queue, and jobs are added to the queue as soon as a 
request arrives (might be days or months between jobs, then suddenly I could 
get a large amount at once).

When a resource is ready, the onMessage()-method of my MDB is called. 
In this method, I then create a MessageConsumer for the job-queue, and call 
receive() with infinite timeout. This seems to be a sub-optimal solution, since 
i'm blocking the MDB thread and Jboss AS seems to dislike my approach (refuses 
to shutdown while thread is blocked) ;)

I've also tried another solution, where I have a n second timeout on the 
receive method, and call ctx.setRollbackOnly() if no job is available when a 
resource is free. 

This makes JBoss assume that the operation failed non-intentionally and puts 
all my messages in the dead-letter-queue after 10 retries. I could increase the 
max amount of retries, but it feels like I'm going down the wrong road here... 
Is there a nicer way of joining messages?

I basically have free hands when it comes to this, so any suggestion is more 
than welcomed! 

Best regards

Alex

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4007629#4007629

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4007629
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to