想要在出现错误

时间:2015-08-11 06:41:20

标签: java rest timeout jms apache-camel

我正在使用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 !!!");
}

0 个答案:

没有答案