Project: springxd
Issue XD-438: More DSL work: exploiting source/sink channels
The DSL changes under XD-369 now build stream Ast objects that can include a source and sink channel: {code} // Source Channel :mystream.foo > count | log // Sink Channel http | count > :foo {code} These new fields in the Ast object need to be copied into the module deployment request objects and then used at the destination as the channels for wiring things together. Currently the only channels used are the .NNN numeric channels where NNN is the index of the module in the stream definition. The source/sink channels are 'extra' channels that need creating - the source channel acting as a real source for the next module in the chain whilst the sink channel acts as a sink output for the last channel in the chain. I can think of two ways to handle the implementation: - In order to police the stream structure as "source | processor* | sink" maybe special SourceChannel and SinkChannel modules are created to represent these channels and when deployment happens the deployer understands that they don't represent a real request to deploy a module but simply the channels to wire up to the adjacent module. - Carry source/sink channel info in the existing module definitions. But then the verification of source/processor*/sink structure will need modification to say a source isn't necessary if the first processor has a source channel attached and a sink isn't necessary if the last processor has a sink channel attached.
Story points: 4