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
