使用注解配置路由器

当使用 @Router 注解一个方法时,该方法可以返回 MessageChannel 类型或 String 类型。 在后一种情况下,端点会解析通道名称,就像它处理默认输出通道一样。 此外,该方法可以返回单个值或集合。 如果返回一个集合,回复消息将被发送到多个通道。 总而言之,以下方法签名都是有效的:

@Router
public MessageChannel route(Message message) {...}

@Router
public List<MessageChannel> route(Message message) {...}

@Router
public String route(Foo payload) {...}

@Router
public List<String> route(Foo payload) {...}

除了基于有效载荷的路由之外,消息还可以根据消息头中可用的元数据(作为属性或特性)进行路由。 在这种情况下,用 @Router 注解的方法可以包含一个用 @Header 注解的参数,该参数映射到头值,如下例所示,并在 注解支持 中有文档说明:

@Router
public List<String> route(@Header("orderStatus") OrderStatus status)

有关基于 XML 的消息路由(包括 XPath 支持),请参阅 XML 支持 - 处理 XML 有效载荷

另请参阅 Java DSL 章中的 消息路由器,了解有关路由器配置的更多信息。