Ron Tuffin
Ron Tuffin

Reputation: 54648

How can one create a Spring-XD processor module to filter messages to the output channel

There are lots of examples of how to write transformers etc in java but nothing about filters (except the script type filters, but I want to use a java method).

I'd like to create a custom java filter to filter the payload of a message from a source to a sink.

The examples of filters all refer to an expression.

(How) can I tell the context to execute a java method in a specified class as the expression?

Upvotes: 2

Views: 1708

Answers (1)

Artem Bilan
Artem Bilan

Reputation: 121482

Well, what you need to implement the custom Processor Module. Just follow with Custom Transformer sample from Spring XD Guilde

The custom Selector for filter:

public class MySelector implements MessageSelector {

     boolean accept(Message<?> message) {
      ...
    }
}

Module ctx myfilter.xml:

<channel id="input"/>

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

<channel id="output"/>

Package your class to the jar and place everything to the dir ${xd.home}/modules/processors/myfilter with structure:

/myfilter
   /config
      myfilter.xml
   /lib
      myfilter.jar

Test it like this:

xd:> stream create --name filtertest --definition "http | myfilter | log"

Upvotes: 6

Related Questions