Apache Camel异常处理

直接看代码

package com.lala.bean;

import org.apache.camel.Exchange;
import org.apache.camel.Processor;

public class TestBean implements Processor 
{
	private String appId;
	public void process(Exchange exchange) throws Exception 
	{
		if(appId == null || "".equals(appId))
		{
			throw new NullPointerException("appId cannot be null ... ");
		}
		System.out.println(appId + " : --------------- " + this.getClass());
	}
	public String getAppId() 
	{
		return appId;
	}
	public void setAppId(String appId) 
	{
		this.appId = appId;
	}
}


package com.lala.bean;

import org.apache.camel.Exchange;
import org.apache.camel.Processor;

public class Error implements Processor 
{
	public void process(Exchange exchange) throws Exception
	{
		System.out.println("-------------------------------------------");
		//这样获取异常信息
		Exception exce = exchange.getProperty("CamelExceptionCaught", Exception.class);
		System.out.println(exce.getMessage());
		exce.printStackTrace();
	}
}



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
	
	<bean id="bean1" class="com.lala.bean.TestBean">
		<property name="appId" value="wwwwwwww"></property>
	</bean>
	
	<bean id="bean2" class="com.lala.bean.TestBean"></bean>
	
	<bean id="bean3" class="com.lala.bean.TestBean">
		<property name="appId" value="mmmmmmmm"></property>
	</bean>

	<bean id="errorBean" class="com.lala.bean.Error" />

	<bean id="testErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
	  <property name="deadLetterUri" value="bean:errorBean"/>
	</bean>

	<camelContext errorHandlerRef="testErrorHandler" id="camelContext" xmlns="http://camel.apache.org/schema/spring">
		
		<template id="camelContextTemplate" />
		
		<route errorHandlerRef="testErrorHandler">
			<from uri="direct:start-error" />
			<to uri="bean:bean1" />
			<to uri="bean:bean2" />
			<to uri="bean:bean3" />
		</route>

	</camelContext>

</beans>

根据上面的配置,很容易看出,bean2会抛异常
这样,在上面的那个route里面,只要有异常,就会路由到bean:errorBean里面去


注意,上面的route上的errorHandlerRef 和 camelContext上面的errorHandlerRef不需要同时添加

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值