我正在使用JMS Message message = Connection.receive(timeout-10 secs)方法。
如果Camel路由中存在错误,它将转到onException并由errorHandlerProcessor处理,它会明确地抛出异常。
问题是,我确实在控制台中得到了这个异常但在浏览器上没有。因为接收(超时),如果发生异常,队列等待10秒,然后显示消息“消息不是从队列接收“。我希望如果我在errorhandlerprocessor中显式抛出异常(在camel路由中出现一些错误时调用),那么队列不应该等待超时,它应该只显示异常我正在错误处理程序处理器中打印。
在Eclipse控制台中,如果出现错误,我会收到此异常“错误!!!”。
但是浏览器上的replyQ等待10秒然后显示该消息 “没有从队列收到回复”而不是打印“”错误!!!“
有没有办法可以在出现错误时跳过等待超时?
请记住,我确实需要超时,因此只需要使用receive(timeout)方法。
建议吗?
eg.I have the following classes.
CamelRoute class
onException(Exception.class)
.handled(true)
.process(errorProcessor)
.end();
Resource class
Message message = consumer
.receive(10000)));
if (message == null) {
connection.close();
consumer.close();
throw new ResultNotFoundException("Message is not received from queue");
}
ErrorProcessor class:-
public class NewProcessor implements Processor {
public void process(Exchange exchange) throws Exception {
throw new ApplicationException("error !!!");
}