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

StackOverflow https://stackoverflow.com/questions/22780939

  •  25-06-2023
  •  | 
  •  

Domanda

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?

È stato utile?

Soluzione

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"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top