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

Spring Integration DSL出站网关,可访问报头

班玉堂
2023-03-14

我对Spring集成有一个问题。我使用的是Spring Boot 1.4.0.Release,Spring Integration 4.3.1.Release,Spring Integration DSL 1.2.0.M1。

我想做的是:

@Bean
@SuppressWarnings("unchecked")
public IntegrationFlow fileSystemReadingFlow() {
    LOGGER.debug("Building fileSystemReadingFlow.");
    // Create a FileInboundChannelAdapter

        return IntegrationFlows.from(s -> s.file(new File(StringUtils.cleanPath(Paths.get(directoryProperties.getLocal() , UNKNOWN).toString())))
                        // Add a Filter to restrict which files are retrieved
                        .filter(fileListFilterBuilder.buildFileListFilter(File.class))
                // Add a poller to continually watch the directory
                , endpointConfigurer -> endpointConfigurer.poller(poller)
        )
                .enrichHeaders(h -> h.header(FOLDER_NAME, LOCAL))
                .handle((message, headers) -> Files.outboundGateway(new File( StringUtils.cleanPath(Paths.get(directoryProperties.getWorking()
                                    , (String) headers.get(FOLDER_NAME)).toString()))).deleteSourceFiles(true).autoCreateDirectory(true) )
                // Send the files to the aggregatingChannel
                .channel("aggregatingFileChannel")
                .get();
  }
ErrorMessage [payload=org.springframework.messaging.MessagingException: failed to resolve channel name 'org.springframework.integration.dsl.file.FileWritingMessageHandlerSpec'; nested exception is org.springframework.messaging.core.DestinationResolutionException: failed to look up MessageChannel with name 'org.springframework.integration.dsl.file.FileWritingMessageHandlerSpec' in the BeanFactory.; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.integration.dsl.file.FileWritingMessageHandlerSpec' is defined, headers={id=e3f5f341-6379-0dd0-11e6-e4bff8f455b0, timestamp=1471619276894}]
.handle(Files.outboundGateway(new File( "someDir"))).deleteSourceFiles(true).autoCreateDirectory(true) )

我尝试过使用SpEl表达式,这可能是正确的方法,但我没有让它起作用。

.handle(Files.outboundGateway("StringUtils.cleanPath(Paths.get(directoryProperties.getWorking()" +
                                    ", headers[FOLDER_NAME]).toString())").deleteSourceFiles(true).autoCreateDirectory(true) )

共有1个答案

阮鸿煊
2023-03-14

在重新阅读了SpEL的参考资料后,我能够弄清楚我的问题。我需要显式地引用我需要调用的静态方法,然后正确地转义文字。

.handle(Files.outboundGateway("T(org.springframework.util.StringUtils).cleanPath(T(java.nio.file.Paths).get('" +directoryProperties.getWorking() +"'" +
                                    ", headers['"+FOLDER_NAME+"']).toString())").deleteSourceFiles(true).autoCreateDirectory(true) )
 类似资料:
  • 使用 Dreamweaver 可生成可供有视觉、听觉、运动及其他障碍的人士使用的网站和 Web 产品。 注意:用户界面已经在 Dreamweaver CC 和更高版本中做了简化。因此,您可能在 Dreamweaver CC 和更高版本中找不到本文中描述的一些选项。有关详细信息,请参阅此文章。 关于辅助内容 辅助功能是指使 Web 站点和 Web 产品可供具有视觉、听觉、运动和其他障碍的人士使用。软

  • 我可以看到请求消息被加入和出列,响应消息被加入和出列。但我有个例外, 我应该如何检索响应?

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

  • 我想在不使用应用编程接口的情况下访问instagram页面。我需要找到追随者的数量,所以这不仅仅是一个源下载,因为页面是动态构建的。 我发现HtmlUnit是一个模拟浏览器的库,这样JS就会被渲染,我就能得到想要的内容。 但是,此调用会导致以下异常: 所以它无法访问该脚本,但如果我正确解释了这一点,它只是为了加载字体,我不需要。我在google上搜索了如何告诉它忽略页面的某些部分,并找到了这条线索

  • 这是我的密码。 由于某种原因,两个Chrome浏览器正在打开,我得到了这个错误: 如何打开一个浏览器,引用该浏览器,并打印“主内容”ID中的所有数据?或者,表ID='dags'?

  • 问题陈述: Spring amqp outbound gateway从不同的线程生成应答(如jms outbound gateway,具有不同的队列,使用相关键关联请求/响应)。 无法将消息与此示例关联。 Spring集成 配置 服务 错误: 组织。springframework。整合。处理程序。ReplyRequiredException:处理程序“outboundGtwyId”未生成回复,其“