骆驼 - 想要删除每次交换的第一条消息

时间:2013-01-16 15:37:49

标签: filter message exchange-server apache-camel

我有一些基本上总是希望丢失列表中第一条记录的东西。它将始终是List< String>的形式 - 我不关心'标题' - 这将始终是列表中的第一个元素,不希望它发送到我的端点

[“header”,“message1”,“message2”...]

.from( A )  // this sends Lists of StringBuffers. The first in the list will be header 
.split().body() // now I have each
.to( B )

理想情况下,我希望丢失交换中的第一条消息,并考虑为其构建正确的查询。

类似的东西(这不起作用 - removeMessage不是驼峰选项)

from( A )
.removeMessage( 0 ) // remove first message - this doesn't actually exist
.split().body().
.to( B )

我正在考虑创建一个过滤器,该过滤器根据交换机上的CamelSplitIndex属性进行删除,但此时已经停止并且我想知道'我正在以正确的方式进行此操作吗?'

2 个答案:

答案 0 :(得分:1)

我按照我的建议做了很多,和其他人建议的相似,但没有使用简单的表达语言,对我来说(具有讽刺意味)似乎更简单

.split()。主体() .filter(header(“CamelSplitIndex”)。isNotEqual(0))

答案 1 :(得分:0)

正如您所说,这似乎是splitterfilter EIP混合的一个很好的例子。

这样的事情可能就是你所需要的。

from(A)
   .split().body()
       .filter().simple("${property.CamelSplitIndex} > 0")
          .to(B);

有几种方法可以解决这个问题,但如果您可以使用这样的基本EIP,请不要过度复杂化。

你总是可以自由地插入一些Java,如果能达到目的,那就去做吧。