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

如何使用Spring集成DSL将预期回复设置为false。错误没有可用的输出通道或replyChannel标头

林富
2023-03-14

我正在处理Spring集成和文件。我正在使用提供的DSL来处理我的文件。在我的集成流程结束时,我使用文件将结果输出到一个新文件。outboundGateway(…) 。但是,我不断收到以下错误消息:没有可用的输出通道或replyChannel标头。根据这篇文章底部的帖子,解决方案是将预期回复设置为false,但是,我如何使用DSL做到这一点?

下面显示了我在集成流程的最后一部分中写入文件的操作。

.handle(Files.outboundGateway(new File(outputFilePath))
                    .autoCreateDirectory(true)
                    .fileExistsMode(FileExistsMode.APPEND)
                    .appendNewLine(true)
                    .fileNameGenerator(m -> m.getHeaders().getOrDefault("file_name", "outputFile") + "_out.txt")
                    
                    )
            .get();

Spring集成错误“没有可用的输出通道或replyChannel标头”

共有1个答案

闻人吕恭
2023-03-14

考虑使用out边界适配器()而不是网关,因为您不会处理写入结果,这是您的流程的结束:

/**
 * Create a {@link FileWritingMessageHandlerSpec} builder for the one-way {@code FileWritingMessageHandler}.
 * @param destinationDirectory the target directory to write files.
 * @return the {@link FileWritingMessageHandlerSpec} instance.
 */
public static FileWritingMessageHandlerSpec outboundAdapter(File destinationDirectory) {
 类似资料:
  • 我正在使用Spring Boot以及Spring集成版本。我正在尝试为调用远程超文本传输协议服务的Spring集成流之一正确设置重试建议。流程的简化草案如下所示:

  • 我在应用程序中收到一个错误,我没有得到解决方案。应用程序请求REST/JSON并尝试与另一个应用程序通信。有一个轮询器可以异步调用每个请求。当一个do a请求总是分派错误“没有可用的输出通道或replyChannel头”,它被重定向到errorChannel句柄。 日志打印: 后发送(发送=true)在通道'错误通道',消息:错误消息[有效载荷=org.springframework.messag

  • 我写了一个带有请求和回复的简单消息流。我必须使用两个独立的队列,所以我声明AmqpOutboundAdapter发送消息,声明Amqp入站Adapter接收回复。 它应该适用于@MessagingGateway: ADUsersFindResponseConfig类类似于: 发送消息正常工作,但我在接收消息时遇到问题。我希望收到的消息将被传递到名为FIND_AD_USERS_REPLY_OUTPU

  • 我已经使用最新的可用版本建立了一个新的Spring Boot Spring Integration Spring Integration Java DSL项目。项目构建正常,但当我运行应用程序时,我得到: 当前使用的依赖项如下: 错误可能是由于jar版本的错误组合吗?我不确定如何调试此错误。

  • 场景可能是:我的期望可能是批量10个数据点,我想对{failed 5,pass 5}或其他什么给出响应。 我的逻辑是将批处理拆分为数据元素并进行验证 成功的验证将发送给aggreagtor, 失败的验证将抛出错误并通过错误通道拾取。 收件人列表路由器将错误通道作为输入通道,并连接2个过滤器,目的是过滤某些类型的错误直接发送响应(与用户输入无关的信息-服务器错误等),某些类型的客户端错误将转到聚合器

  • 但我得到的错误如下: POM: 我按以下方式配置入站网关: 并且,服务激活器: 顺便说一句,只有当我在服务激活器中删除outputChannel="outputChannel"时,它才有效。 这个问题有什么解释吗,我有什么误解吗?