This works fine for me, but only with a single header...
dataflow:>stream create foo --definition "time --fixedDelay=5 |
header-enricher --headers='foo=payload.substring(0, 1)' |
log --expression=#root " --deploy
With result
2017-06-21 08:28:38.459 INFO 70268 --- [-enricher.foo-1] log-sink : GenericMessage [payload=06/21/17 08:28:38, headers={amqp_receivedDeliveryMode=PERSISTENT, amqp_receivedRoutingKey=foo.header-enricher, amqp_receivedExchange=foo.header-enricher, amqp_deliveryTag=1, foo=0, amqp_consumerQueue=foo.header-enricher.foo, amqp_redelivered=false, id=302f1d5b-ba90
I am told that this...
--headers='foo=payload.substring(0, 1) \n bar=payload.substring(1,2)'
...or this...
--headers='foo=payload.substring(0, 1) \u000a bar=payload.substring(1,2)'
should work, but I get a parse error...
Cannot find terminating ' for string time --fixedDelay=5 | header-enricher --headers='foo=payload.substring(0, 1)
bar=payload.substring(1,2)' | log --expression=#root
...I am reaching out to the shell/deployer devs and will provide an update if I have one.
I tested with a literal value (single header) too...
dataflow:>stream create foo --definition "time --fixedDelay=5 |
header-enricher --headers='foo=\"bar\"' |
log --expression=#root " --deploy
2017-06-21 08:38:17.684 INFO 70916 --- [-enricher.foo-1] log-sink : GenericMessage [payload=06/21/17 08:38:17, headers={amqp_receivedDeliveryMode=PERSISTENT, amqp_receivedRoutingKey=foo.header-enricher, amqp_receivedExchange=foo.header-enricher, amqp_deliveryTag=8, foo=bar, amqp_consumerQueue=foo.header-enricher.foo, amqp_redelivered=false, id=a92f4908-af13-53aa-205d-e25e204d04a3, amqp_consumerTag=amq.ctag-X51lhhRWBbEDVSyzp3rGmg, contentType=text/plain, timestamp=1498048697684}]