spring-integration - 弹簧集成 | 响应式流支持 | 创建反应式消息网关时出现异常
问题描述
我正在尝试使用 Reactive Streams Support 升级我现有应用程序之一中的 spring 集成流。采取的方法是将Gateway方法的参数和返回类型更改为Mono。流程执行顺利,当回复到达网关时,会导致java.lang.IllegalArgumentException: 'beanFactory' must not be null
我正在使用 Spring Boot 2.3.0。
inputChannel是一个DirectChannel
gatewayReplyChannel是一个FluxMessageChannel
@MessagingGateway(name = "reactiveGateway")
public interface EntryGate {
@Gateway(requestChannel = "inputChannel", replyChannel = "gatewayReplyChannel")
Mono<String> process(final Mono<String> input);
}
异常跟踪
Caused by: java.lang.IllegalArgumentException: 'beanFactory' must not be null
at org.springframework.util.Assert.notNull(Assert.java:198)
at org.springframework.integration.channel.ChannelUtils.getErrorHandler(ChannelUtils.java:51)
at org.springframework.integration.endpoint.ReactiveStreamsConsumer.onInit(ReactiveStreamsConsumer.java:155)
at org.springframework.integration.context.IntegrationObjectSupport.afterPropertiesSet(IntegrationObjectSupport.java:214)
at org.springframework.integration.gateway.MessagingGatewaySupport.registerReplyMessageCorrelatorIfNecessary(MessagingGatewaySupport.java:806)
at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceiveMessageReactive(MessagingGatewaySupport.java:609)
at org.springframework.integration.gateway.GatewayProxyFactoryBean.sendOrSendAndReceive(GatewayProxyFactoryBean.java:639)
at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:573)
任何人都可以帮忙吗?
解决方案
MessagingGatewaySupport.registerReplyMessageCorrelatorIfNecessary()
必须修复才能endpoint.setBeanFactory(beanFactory);
调用. ReactiveStreamsConsumer
显然我们只是没有一个测试用例来覆盖replyChannel
as a FluxMessageChannel
.
考虑根本不使用它replyChannel
作为解决方法。对于这种流来说真的无关紧要:它已经通过Mono
返回类型进行反应。没有理由在内部转移到其他反应流以进行回复相关性。
推荐阅读
- apache-poi - 从 XSSFWorkbook 中删除 XSSFTable
- python - 我的条件有什么问题?使用 np.where 语句标记我的 pandas 数据帧
- c++ - 为什么 Oracle 无法解析服务名称?
- laravel - Laravel 5.6 将对象转换为数组失败
- image - 如何为赤道偏差加权生成具有有效 y 的高斯图?
- hadoop - 用于辅助的用户定义 HBase 协处理器实现
- javascript - 在 Typescript 上声明类型时,前导管道的建议是什么
- javascript - 更改 FormArray 的表单控制顺序时的复制验证
- node.js - 如何使用自适应卡在 microsoft bot framework v4 中处理按钮输入
- angular - Angular 在父组件嵌套表单中使用子组件表单