Assuming we would like to treat messages incoming to the same message channel differently, we may use conditional dispatching. Spring Cloud Stream supports dispatching messages to multiple @StreamListener methods registered on an input channel, based on a condition. That condition is a Spring Expression Language (SpEL) expression defined in the condition attribute of the @StreamListener annotation:
public boolean send(Order order) { Message<Order> orderMessage = MessageBuilder.withPayload(order).build(); orderMessage.getHeaders().put("processor", "account"); return this.source.output().send(orderMessage);}
Here's the sample implementation that defines two methods annotated with @StreamListener that listen ...