spring integration使用XML方式

参考:

http://www.blogjava.net/xmatthew/archive/2008/12/04/243443.html

需求:   小卖部有一个订饮料服务,客户可以通过订单来订购所需要饮料。小卖部提供两种咖啡饮料
        LATTE(拿铁咖啡)和MOCHA(摩卡咖啡)。每种又都分冷饮和热饮
    整个流程如下:
        1.有一个下订单模块,用户可以按要求下一个或多个订单。
        2.有一个订单处理模块,处理订单中那些是关于订购饮料的。
        3.有一个饮料订购处理模块,处理拆分订购的具体是那些种类的饮料,把具体需要生产的饮料要求发给生产模块
        4.有一个生产模块,进行生产。
        5.等生成完成后,有一个订单确认模块(Waiter),把订单的生成的饮料输出。

大体流程如下:

一 设置一个网关接口  方法添加@Gateway(requestChannel="FirstChannle") 进行消息接收(注意:只是一个接口)

二 设置一个splitter端点连接firstChannle-secondChannle通道 在端点内将多咖啡订单分成单咖啡订单

三 设置一个router端点根据生产需要将secondChannle的数据路由到不同的通道(例如 按照冷热cafe的分类将冷的输出到coldChannle,将热的输出到hotChannle 直接在方法内返回"coldChannle"或"hotChannle "String即到相应通道)

四 根据生产需要 设置与路由的通道相对应的service-activator端点 这些端点统一连接一个fourthChannle通道 在service-activator端点方法内进行业务操作(例如 本次设置两个方法(端点)与cold与hot通道进行相连 在方法类创建相应的cafe实例 再将其输出到fourthChannle通道)

五 定义一个stream channel adaptor 里面进行最后的操作(例如 发布消息 输出到控制台 将cafe交到客户手里)

六  设置一个aggregator端点连接fourthChannle-stream channel adaptor 在该端点方法内将生产的产品输出到fifthChannle  这个端点会自动将我们在splitter端点内分裂的信息根据消息头合并(例如 将本次的单个订单的单个cafe根据订单信息合并为单个订单多个cafe再 统一输出  可以配置completion-strategy="class" completion-strategy-method="method" 来自定义订单(消息)合并规则)

猜你喜欢

转载自blog.csdn.net/Pecodo/article/details/85696407