Hi all, currently i trying to create a blocking processor. This is a
processor that block the threads until a condition is raised. To make this
processor i'm using a Semaphore that acquire when processed a Exchange and
a Timer that execute every X second that release this semaphore to let pass
the blocked threads. This solution work like a charm but the problem
appears when the Camel context is shutting down. In this moment i need to
release all blocked threads, for this, i need that Camel call a shutdown
method.
To implement this the processor extends ServiceSupport class but i can't
get it work.

public void process(Exchange exchange) throws Exception {
    semaphore.acquire();
}

protected void doStop() throws Exception {
if (semaphore.hasQueuedThreads()) {
int queueLength = semaphore.getQueueLength();
semaphore.release(queueLength);
}
}

Any suggestions?


--
Jorge Davison

Reply via email to