如何创建Spring-XD处理器模块来过滤消息到输出通道

Ron*_*fin 2 java spring spring-xd

有很多关于如何在java中编写变换器等的例子,但没有关于过滤器的内容(脚本类型过滤器除外,但我想使用java方法).

我想创建一个自定义java过滤器来过滤从源到接收器的消息的有效负载.

过滤器的示例都是指表达式.

(如何)我可以告诉上下文在指定的类中执行java方法作为表达式?

Art*_*lan 6

那么,您需要实现自定义处理器模块.只需按照Spring XD Guilde的 Custom Transformer样品进行操作即可

Selector过滤器的自定义:

public class MySelector implements MessageSelector {

     boolean accept(Message<?> message) {
      ...
    }
}
Run Code Online (Sandbox Code Playgroud)

模块ctx myfilter.xml:

<channel id="input"/>

<filter input-channel="input" output-channel="output">
    <beans:bean class="custom.MySelector" />
</filter>

<channel id="output"/>
Run Code Online (Sandbox Code Playgroud)

将您的类打包到jar中并将所有内容放置到${xd.home}/modules/processors/myfilter具有结构的目录:

/myfilter
   /config
      myfilter.xml
   /lib
      myfilter.jar
Run Code Online (Sandbox Code Playgroud)

像这样测试:

xd:> stream create --name filtertest --definition "http | myfilter | log"
Run Code Online (Sandbox Code Playgroud)