Apache Camel中的recipientList和routingSlip的区别?

二者都是根据消息来动态的路由到一个多个结点

简单用法如下:


<route autoStartup="true">
	<from uri="direct:recipientList" />
	<recipientList delimiter="," ignoreInvalidEndpoints="true">
		<header>endlist</header>
	</recipientList>
</route>

<route autoStartup="true">
	<from uri="direct:routingSlip" />
	<routingSlip uriDelimiter="," ignoreInvalidEndpoints="true">
		<header>endlist</header>
	</routingSlip>
</route>

ProducerTemplate pt = context.getBean("camelTemplate", ProducerTemplate.class);
		
pt.send("direct:routingSlip", new Processor()
{
	String endList = "bean:bean1,bean:changeInfo,bean:bean2";
	public void process(Exchange exch) throws Exception 
	{
		exch.getIn().setHeader("endlist", endList);
	}
});

最后,结果都会路由到bean:bean1,bean:changeInfo,bean:bean2这3个节点上面

但是,他们是有区别的:


routeSliping是将消息依次传入后面的节点进行处理,不会负责,后面的节点修改的是同一个消息
recipientList 会将消息复制多份发送到后面的节点,后面每个节点处理的消息不是同一份


也就是说,recipientList 效果如同 multicast  ,routeSliping效果如同:pipeline

既然这样recipientList支持在线程池里面运行,而routeSliping不支持用线程池运行




  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值