当前位置: 首页 > 知识库问答 >
问题:

Spring集成FTP出站网关控制台输出

海嘉赐
2023-03-14

在带有Java配置的ftp出站网关的Spring集成文档示例(16.8.1)中,如何将应答通道的有效负载记录到控制台?

共有1个答案

吕扬
2023-03-14

添加一个WireTap@Bean并将其MessageChannel连接到LoggingHandler

将有线抽头添加为网关输出通道的通道拦截器

或者,使用< code >。wiretap()当使用Java DSL时。

这里是文档。

编辑

Java Config:

@SpringBootApplication
public class So49308064Application {

    public static void main(String[] args) {
        SpringApplication.run(So49308064Application.class, args);
    }

    @Bean
    public ApplicationRunner runner (Gate gate) {
        return args -> {
            List<String> list = gate.list("foo");
            System.out.println("Result:" + list);
        };
    }

    @ServiceActivator(inputChannel = "ftpLS")
    @Bean
    public FtpOutboundGateway getGW() {
        FtpOutboundGateway gateway = new FtpOutboundGateway(sf(), "ls", "payload");
        gateway.setOption(Option.NAME_ONLY);
        gateway.setOutputChannelName("results");
        return gateway;
    }

    @Bean
    public MessageChannel results() {
        DirectChannel channel = new DirectChannel();
        channel.addInterceptor(tap());
        return channel;
    }

    @Bean
    public WireTap tap() {
        return new WireTap("logging");
    }

    @ServiceActivator(inputChannel = "logging")
    @Bean
    public LoggingHandler logger() {
        LoggingHandler logger = new LoggingHandler(Level.INFO);
        logger.setLogExpressionString("'Files:' + payload");
        return logger;
    }

    @Bean
    public DefaultFtpSessionFactory sf() {
        DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory();
        sf.setHost("...");
        sf.setUsername("...");
        sf.setPassword("...");
        return sf;
    }

    @MessagingGateway(defaultRequestChannel = "ftpLS", defaultReplyChannel = "results")
    public interface Gate {

        List<String> list(String directory);

    }

}

.

2018-03-29 09:04:20.383  INFO 15158 --- [           main] o.s.integration.handler.LoggingHandler   
             : Files:bar.tx,bar.txt,baz.txt
Result:[bar.tx, bar.txt, baz.txt]

JavaDSL:

@SpringBootApplication
public class So49308064Application {

    public static void main(String[] args) {
        SpringApplication.run(So49308064Application.class, args);
    }

    @Bean
    public ApplicationRunner runner (Gate gate) {
        return args -> {
            List<String> list = gate.list("foo");
            System.out.println("Result:" + list);
        };
    }

    @Bean
    public IntegrationFlow flow() {
        return f -> f
                .handle((Ftp.outboundGateway(sf(), "ls", "payload").options(Option.NAME_ONLY)))
                .log(Level.INFO, "lsResult", "payload")
                .bridge(); // needed, otherwise log ends the flow.
    }

    @Bean
    public DefaultFtpSessionFactory sf() {
        DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory();
        sf.setHost("...");
        sf.setUsername("...");
        sf.setPassword("...");
        return sf;
    }

    @MessagingGateway(defaultRequestChannel = "flow.input")
    public interface Gate {

        List<String> list(String directory);

    }

}

.

2018-03-29 09:12:28.991  INFO 16638 --- [           main] lsResult                                 
                 : [bar.tx, bar.txt, baz.txt]
Result:[bar.tx, bar.txt, baz.txt]
 类似资料:
  • 我有一个 FileUpload 事件,应该将其发送到 http:outbound upload URL。为此,我必须首先对登录 URL 进行身份验证并获取响应,并设置要执行的出站上传 URL 的会话 ID。在我的情况下,我有一个事件侦听器,它侦听应用程序以发布文件上传事件。发布后,我的侦听器可以拾取并执行流。我正在尝试了解如何实现这一点,因为文件上传对象需要保留,直到登录响应返回。谢谢!

  • 我正在尝试将spring集成配置为向队列发送消息,然后接收消息,即非常简单的事情: 我认为解耦所必需的是在流程的两端都有一个消息网关。因此,我的第一次尝试(有效)如下所示: 其中MessageReceiverHandler()是扩展AbstractMessageHandler的bean。 所以上面我们有一个用于出站消息的消息网关。我假设我们也应该有一个用于入站消息的网关,允许我们将传入消息处理与应

  • 我正在开发一个关于Spring集成的POC,使用如下。 从远程JMS队列订阅输入消息(A) 将输入消息(A)转换为(B) 使用(B)调用远程Web服务并接收响应 我的spring int-config-xml有以下内容 在我的Spring集成proj工作区中拥有所有jaxb生成的源代码。 在STS 3.8中执行此操作时。3,将抛出以下错误。 不确定我的代码中有什么错误。任何解决这一问题的帮助都是高

  • 我正在开发一个Spring集成应用程序,我有一个地图列表,我需要将其插入到表格中。 我使用了jdbc: Outsport-网关或适配器将记录插入到表中。 但是如何使用jdbc:出站网关从我的地图列表中插入所有记录。

  • 我有一个http出站网关,它将json消息发布到rest服务,现在rest将以json消息类型的http错误状态响应,以防我们的应用程序捕获任何错误。在将json消息发布到rest服务并获得http成功状态的愉快场景中,我们的应用程序也应该捕获json消息。 现在我通过Spring集成实现了什么,我能够发送消息并获得成功响应并捕获它,但在错误状态下Spring行为会抛出异常,我如何更改行为? 如果

  • 有没有什么方法可以将控制台输出镜像到java中的localhost,甚至可以添加一些不错的CSS。如果同一网络中的其他设备也能到达控制台,那就太酷了。我做了很多关于这个主题的研究,但没有找到任何关于这个的网站/线程/问题。帮助将不胜感激!