基于@michael-simons(阅读这篇文章)的想法,此 PR 将添加通过 JMX、Jersey、Spring MVC 和 WebFlux 公开 Spring Integration 图的功能。
注意:目前@since 2.1.0
在 Javadoc 中提到。
基于@michael-simons(阅读这篇文章)的想法,此 PR 将添加通过 JMX、Jersey、Spring MVC 和 WebFlux 公开 Spring Integration 图的功能。
注意:目前@since 2.1.0
在 Javadoc 中提到。
@garyrussell @artembilan 你觉得怎么样?
我都可以; SI目前仅支持MVC和WebFlux。谢谢蒂姆!
IntegrationGraphServer
我唯一的问题是,当执行器启用时,我们是否应该默认自动配置。
这似乎取决于豆子的存在;如果从未被引用,则开销很小。
@garyrussell @artembilan 我也这么想。我应该把以下内容放在下面吗IntegrationAutoConfiguration.IntegrationConfiguration
?
@ConditionalOnMissingBean
@Bean
public IntegrationGraphServer integrationGraphServer() {
return new IntegrationGraphServer();
}
这个公关是这样做的正确人选吗?我假设您希望将其向后移植到 1.x(如果可能的话)?
IMO 那是这样做的正确地点。我不认为我们会向后移植它。该主题没有错误,并且总有一种解决方法可以使用现有工具和挂钩来完成相同的任务。
@artembilan @garyrussell 最后的添加已被推送。如果一切顺利的话我想这个 PR 可以标记为 2.1.0 吗?如果您需要我改变一些事情,请告诉我!
@TYsewyn,我们将在适当的时候审查并为此指定一个里程碑。谢谢!
我对这个进行了广泛的研究,并用我自己的叉子进行了打磨。我不喜欢 anIntegrationGraphServer
作为主要自动配置的一部分而创建的事实。这是一个管理问题,所以根本不应该存在。
我试图以端点未启用为条件,但没有简单的方法可以做到这一点,因为它@ConditionalOnEnabledEndpoint
仅适用于特定类型。也许我们应该重新审视一下这个问题。
另外我不明白为什么默认情况下禁用端点。这真的是我们想要的吗?
我最初也有同样的想法,斯蒂芬。是的,这IntegrationGraphServer
是一个管理问题,但从另一方面来说,它存在于core
模块中,并且是一个尽可能简单的无源元件。所以,最后我决定在主自动配置中再保留一个 bean 不会有什么坏处。
如果这仍然是一个问题,那么让我们考虑从一些执行器自动配置中实例化它!问题是它是一个独立的组件,即使提到的端点被禁用也可以使用。
+1 不会使端点默认禁用。在审查过程中不知何故错过了那部分......对此事有任何解释吗,@TYsewyn?
谢谢
感谢您的反馈。
它是一个尽可能简单的无源元件
我不确定我是否同意这一点。一旦上下文刷新,就有一个事件监听器将构建图表。如果您不使用执行器,我认为没有理由运行它。如果您需要此功能,您可以定义 bean(就像您现在可能所做的那样)。
问题是它是一个独立的组件,即使提到的端点被禁用也可以使用。
这很好,但在我看来,提供这个(只有端点会使用)和在需要端点时提供这个是有区别的。我更喜欢后者,但不幸的是,这并不容易实现。
+1 不会使端点默认禁用。
我已经在我的波兰提交中改变了这一点
斯蒂芬,
我认为我们很高兴与您一起完善:您已经解决了所有问题! :+1:
我禁用了端点,因为自动配置中不存在IntegrationGraphServer
bean,因此默认情况下引导该端点没有任何意义。我们后来添加了一个,但我在添加 bean 时忘记默认打开它。
你已经解决了所有的问题
我没想到。我希望IntegrationGraphServer
如果端点被禁用或 Spring Integration 未启用,则根本不会创建。
@artembilan 我怎么知道项目上启用了 SI?我可以寻找一种典型的豆子吗?
@斯尼科尔,
我认为您可以IntegrationGraphServer
在启用端点时有条件地创建。另一方面,我们的主要IntegrationAutoConfiguration
依赖于@ConditionalOnClass(EnableIntegration.class)
.也许这在这里也足够了?如果故事仍然是关于排除的IntegrationAutoConfiguration
,那么我们可以考虑针对 bean 的一个条件IntegrationContextUtils.INTEGRATION_HEADER_CHANNEL_REGISTRY_BEAN_NAME
,它是 的一种类型DefaultHeaderChannelRegistry
。那是由 that 注册的其中之一@EnableIntegration
。
希望有帮助。
感谢您的反馈@artembilan
我认为您可以在启用端点时有条件地创建 IntegrationGraphServer 。
实际上我现在不能,所以如果你想实现这一点,我们就必须改变条件。
我创建了 #12945 来改善这种情况。如果合并,我可以防止IntegrationGraphServer
在端点被禁用时创建。
@TYsewyn 现在已合并到master
.多谢!
感谢大家的宝贵反馈!