标签:java apache-camel eip
我有一个bean,它使用Camel中的ProducerTemplate生成对象并将它们发送到SEDA队列.
我发送了一个正文和标题:
producerTemp.sendBodyAndHeader(document, "sourceSystem", sourceSys);
这里的头名是sourceSystem,头对象值是一个ENUM(sourceSys),它包含包含许多不同属性的文档对象的源.
我想从SEDA队列以并发方式提取消息,并根据sourceSys枚举的值将它们发送到不同的端点.
什么是骆驼使用它最有效的EIP,有没有人有一个使用Java DSL的例子,我不知道如何测试Enum的价值?
我在想我做这样的事情:
from("seda:a")
.choice()
.when(header("foo").isEqualTo(SourceSysEnum.SYSTEM1))
.to("seda:b")
.when(header("foo").isEqualTo(SourceSysEnum.SYSTEM2))
.to("seda:c")
.otherwise()
.to("seda:d");
..?
解决方法:
您可以使用收件人列表EIP
http://camel.apache.org/recipient-list.html
然后例如使用java bean来计算消息应该去的uri.
from("seda:a")
.recpientList().method(MyBean.class, "whereToGo");
在bean中你可以使用bean参数绑定.
> http://camel.apache.org/bean-binding.html
> http://camel.apache.org/parameter-binding-annotations.html
所以你可以绑定标题如下:
public class MyBean {
public String whereToGo(String body, @Header("foo") SourceSysEnum sys) {
...
}
}
如果您不需要邮件正文,则可以省略该参数.
标签:java,apache-camel,eip 来源: https://codeday.me/bug/20190903/1795650.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。