kevin.miao
kevin.miao

Reputation: 3

How can I use my own processor module to create a tap in Spring-XD

I created a stream named vfs-od-fe-hb,where the source is vfs, the processors are od and fe, and the sink is hb. I want to create a tap in the postion of fe and store the result into hdfs.

My shell command is:

stream create --name vfs-od-fe-hb-tap-ib-hdfs --definition "tap:stream:vfs-od-fe-hb.fe > ib > hdfs" --deploy

ib is my processor, it can handle the messages from fe successfully, but now the wrong messages:

Command failed org.springframework.xd.rest.client.impl.SpringXDException: XD133E:(pos 34): Expected channel prefix of 'queue' or 'topic' but found 'hdfs'

Upvotes: 0

Views: 51

Answers (1)

Gary Russell
Gary Russell

Reputation: 174709

If ib is a processor, the syntax should be

tap:stream:vfs-od-fe-hb.fe > ib | hdfs

i.e. the tap (named channel) is ib's input channel and we pipe its output as normal.

The parser is reacting to the > hdfs because > can only be between a named channel and processor or sink.

(or after a processor when sending to a named channel - queue:..., topic:...).

Upvotes: 2

Related Questions