Affects Version/s: v1.0.0, v1.1.0
Fix Version/s: v1.3.0
Right now the multiplexing channel selector treats all channels as required channels. There should be a simple provision where some channel can be marked optional so that a failure in publishing the event to that particular channel does not cause the entire request to fail. For example, the following configuration:
agent.sources.foo.selector.mapping.foo = ch1 ch2
agent.sources.foo.selector.mapping.bar = ch2 ch3
agent.sources.foo.selector.optional.channels = ch2
Would imply that for mapping value "foo", ch1 is a required channel whereas ch2 is an optional channel. Similarly, for mapping "bar', ch3 is a required channel but ch2 is optional.
The implementation in the patch is:
I did not implement it exactly as defined in the Jira, instead:
agent.sources.foo.selector.mapping.zebra = ch2
agent.sources.foo.selector.optional.zebra = ch1
Therefore the behavior of "mapping" keyword does not change, instead the optional keyword simply adds more channels as optional channels. If "mapping" keyword does not exist for the header or has no values, then the event is written to default channel and optional channels. If optional is empty then even is simply written to channels specificied by "mapping"(if empty, then to default channels). Basically mapping and optional means: write to channels specified by "mapping" and if available, to the ones specified by "optional." If mapping is empty write to default, and optionally to optional channels.