发布于 2014-09-06 00:29:56 | 319 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Spring Integration Spring消息通信

Spring Integration能在基于Spring的应用中进行简单的消息通信,并通过简单的适配器与外部系统集成。这些适配器提供了一个更高级别的抽象,超越 了Spring对远程调用、消息和调度的支持。其主要目标是在保持关注点分离的同时,为构建企业集成解决方案提供一个简单的模型,该模型对产出可维护、可 测试的代码来说是必不可少的。


Spring Integration 4.1 Milestone 1 发布,现已提供在 Milestone Repository,可以使用 Maven 和 Gradle 安装升级,也可以直接下载

Spring Integration 4.1 Milestone 1 包括一些新特性,系统改进和 bug 修复,GA 版本将会在十月底发布。

改进列表:

  • migration of additional Spring Integration APIs to the Core Spring Messaging module and the Spring Integration equivalents are deprecated
    or removed to avoid confusion in the target applications;

  • a number of Messaging performance improvements have been included in Spring Framework 4.1.

  • Spring Framework 4.1 introduced the SpEL Compiler. It is very useful for Spring Integration, which extensively uses SpEL at runtime. You can enable the SpEL Compiler using thespring.expression.compiler.mode System Property with a value of IMMEDIATE or MIXED.

WebSocket Adapters

引入了 WebSocket Inbound 和 Outbound Channel Adapters。

服务器端:

@Configuration@EnableIntegrationpublic class ServerConfig {

    @Bean
    public ServerWebSocketContainer serverWebSocketContainer() {
        return new ServerWebSocketContainer("/ws").withSockJs();
    }

    @Bean
    public MessageProducer webSocketInboundChannelAdapter() {
        WebSocketInboundChannelAdapter webSocketInboundChannelAdapter = 
                    new WebSocketInboundChannelAdapter(serverWebSocketContainer());
        webSocketInboundChannelAdapter.setOutputChannel(webSocketInputChannel());
        return webSocketInboundChannelAdapter;
    }

    @Bean
    @Transformer(inputChannel = "webSocketInputChannel", outputChannel = "webSocketOutputChannel")
    public ExpressionEvaluatingTransformer transformer() {
        return new ExpressionEvaluatingTransformer(PARSER.parseExpression("'Hello ' + payload"));
    }

    @Bean
    @ServiceActivator(inputChannel = "webSocketOutputChannel")
    public MessageHandler webSocketOutboundMessageHandler() {
        return new WebSocketOutboundMessageHandler(serverWebSocketContainer());
    }}

客户端

@Configuration@EnableIntegrationpublic class ClientConfig {
    @Bean
    public WebSocketClient webSocketClient() {
        return new SockJsClient(Collections.<Transport>singletonList(
                        new WebSocketTransport(new JettyWebSocketClient())));
    }

    @Bean
    public IntegrationWebSocketContainer clientWebSocketContainer() {
        return new ClientWebSocketContainer(webSocketClient(), "ws://host:port/ws");
    }

    @Bean
    public MessageProducer webSocketInboundChannelAdapter() {
        WebSocketInboundChannelAdapter webSocketInboundChannelAdapter =
                new WebSocketInboundChannelAdapter(clientWebSocketContainer());
        webSocketInboundChannelAdapter.setOutputChannel(webSocketInputChannel());
        return webSocketInboundChannelAdapter;
    }

    @Bean
    @ServiceActivator(inputChannel = "webSocketOutputChannel")
    public MessageHandler webSocketOutboundMessageHandler() {
        return new WebSocketOutboundMessageHandler(clientWebSocketContainer());
    }}

另一个简单集成 Spring WebSockets 和 STOMP 子协议的方法,但是使用集成流来处理请求和发送响应,这是基于 @MessageMapping 注释的,但是在 @MessagingGateway 接口:

@MessagingGateway@Controllerpublic interface WebSocketGateway {

    @MessageMapping("/greeting")
    @SendToUser("/queue/answer")
    @Gateway(requestChannel = "greetingChannel")
    String greeting(String payload);}

支持 Reactor

Promise<?> Gateway 支持 Project Reactor,现在 Spring Integration 信息流可以用作 Reactive Streams 的一部分:

@MessagingGateway(reactorEnvironment = "reactorEnv")public interface PromiseGateway {

    @Gateway(requestChannel = "promiseChannel")
    Promise<Integer> multiply(Integer value);}

        ...@ServiceActivator(inputChannel = "promiseChannel")public Integer multiply(Integer value) {
    return value * 2;}

        ...Streams.defer(Arrays.asList("1", "2", "3", "4", "5"))
    .env(this.environment)
    .get()
    .map(Integer::parseInt)
    .mapMany(integer -> promiseGateway.multiply(integer))
    .collect()
    .consume(integers -> ...)
    .flush();

另外,还支持 Spring Framework ListenableFuture<?> gateway 方法返回类型。

Boon JSON mapper

 JSON 转换器添加了 Boon JsonObjectMapper 实现。

Splitter Iterator

<splitter>s 可以返回 Iterator<?>Iterable<?> 作为一个 payload 来达到 streaming 行为。

这里包含两个维护版本:3.0.54.0.4。强烈建议各位用户升级到最新版本!

注意

完整的更新列表请看这里What's NewJava Docs

升级请看迁移指导

SpringOne 2GX 2014

一些新特性下周将会出现在 SpringOne,请继续关注 Gary Russell's Session

Spring Integration能在基于Spring的应用中进行简单的消息通信,并通过简单的适配器与外部系统集成。这些适配器提供了一个更高级别的抽象,超越 了Spring对远程调用、消息和调度的支持。其主要目标是在保持关注点分离的同时,为构建企业集成解决方案提供一个简单的模型,该模型对产出可维护、可 测试的代码来说是必不可少的。

文档地址

 



历史版本 :
Spring Integration 5.0 正式发布,Spring 消息通信
Spring Integration for AWS 1.1 GA 发布
Spring Integration 5.0 rc1 发布,Spring 消息通信
Spring Integration 5.0.0.M7 发布
Spring Integration 5.0.0.M6 发布
Spring Integration 5.0.0.M5 发布
Spring Integration 4.3.10 发布,Spring 消息通信
Spring Integration 5.0.0.M4 发布
Spring Integration 4.3.9 发布,Spring 消息通信
Spring Integration 4.3.8 发布,应用于 Spring 框架
Spring Integration 5.0 Milestone 2 发布
Spring Integration 5.0 Milestone 1 发布
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务