java - 将消息从 ServiceActivator 传递到新的 InboundChannelAdapter

标签 java spring spring-boot spring-integration

我已经实现了Spring(启动)集成,我有一个InboundChannelAdapter,这个方法通过RestTemplate发送Web请求,并将结果传递给Splitter、Filter,最后到一个ServiceActivator,ServiceActivator将数据保存到数据库中。 我想将消息传递给新的“InboundChannelAdapter”,以便在将数据保存到数据库后对消息进行一些额外的处理,我应该做什么才能实现这个?
我的解决方案是正确的解决方案吗?

@InboundChannelAdapter(value = "channel1", poller = @Poller("downloadTrigger"))
public ResponseEntity<AppsItemParser[]> download()
{
    String url = config.getUrl();
    // Call a rest webservice
    return responseEntity;
}

@Splitter(inputChannel = "channel1", outputChannel = "channel2")
public List<AppsItemParser> scrape(ResponseEntity<AppsItemParser[]> payload)
{
    return new ArrayList<AppsItemParser>(Arrays.asList(payload.getBody()));
}

@Transformer(inputChannel = "channel2", outputChannel = "channel3")
public App convert(AppsItemParser payload)
{
    App app = new App();
    app.setAddDate(payload.getAddDate());
    app.setSize(payload.getSize());

    return app;
}

@Filter(inputChannel = "channel3", outputChannel = "channel4")
public boolean filter(App app)
{
    final Set<ConstraintViolation<App>> violations = validator.validate(app);
    if (violations != null && !violations.isEmpty())
    {
        return false;
    }
    return true;
}

  @ServiceActivator(inputChannel = "channel4")
    public void save(App app)
    {
        appRepository.save(app);
        //Send message to another spring integration flow
    }

最佳答案

入站 channel 适配器定义流的开始;它们不接收来自其他组件的消息;相反,让您的服务返回结果...

@ServiceActivator(inputChannel = "channel4", outputChannel="next")
public App save(App app)
{
    appRepository.save(app);
    return app;
}

@ServiceActivator(inputChannel = "channel4", outputChannel="next")
public SomeResult save(App app)
{
    appRepository.save(app);
    return new SomeResult(...);
}

关于java - 将消息从 ServiceActivator 传递到新的 InboundChannelAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46263173/

相关文章:

java - 正则表达式将带有选项 stub 字符串的字符串拆分为三个

java - 如何在多处理器机器上从 JavaEE 服务器获得最大性能?

java - SimpleIdentificResourceAssembler 无法解析为类型

java - 有没有一种 Spring 方法来检查网页是否仍然存在?

java - 类构造函数参数导致异常

java - 如何在 Camel route 使用上下文路径?

java - 未调用 JSF 命令按钮操作

Java 动画

spring-boot - 为什么我的 spring-configuration-metadata.json 属性没有生成?

java - 如何在STS内置服务器上重新部署Spring Boot应用程序