【问题标题】:How to add or adjust the configuration of the file supplier in Spring Cloud Stream如何在 Spring Cloud Stream 中添加或调整文件供应商的配置
【发布时间】:2021-10-04 21:13:59
【问题描述】:

Spring Cloud Stream 的 file-supplier 依赖项包括 FileSupplierConfiguration,它配置了一个 File 消息源(来自 Spring Integration)。我需要自定义此@Configuration 提供的FileReadingMessageSource,但我不确定最好的方法。它只提供了基本属性来控制它的@Beans,但我需要更多。

我考虑将FileSupplierConfiguration 从应用程序中排除,但我必须将其中的大部分代码复制到我自己的@Confguration 类中。显然,这是一个不太理想的解决方案。

那么如何自定义 File 消息源,例如使用额外的 FileListFilters?

【问题讨论】:

    标签: spring-cloud-stream


    【解决方案1】:

    添加一个BeanPostProcessor@Bean,像这样:

    @Bean
    public BeanPostProcessor inboundFileAdaptorCustomizer() {
        return new BeanPostProcessor() {
            @Override
            public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
                if (bean instanceof FileInboundChannelAdapterSpec) {
                     //add filter function here
                    ((FileInboundChannelAdapterSpec) bean).filter(files -> ...);
                }
                return bean;
            }
        };
    }
    

    【讨论】:

    • 这个解决方案的问题是它只能对生成的FileReadingMessageSource 进行非常有限的定制。那是因为FileInboundChannelAdapterSpec 非常有限。一方面,它只允许您设置一个附加过滤器。它也总是使用CompositeFileListFilter,而在某些情况下我可能想使用ChainFileListFilter。真正的问题是规范类有多么有限。我正在寻找一种替代方案,可以让我完全控制底层 FileReadingMessageSource
    • 正如the GitHub issue 中评论的那样,我能够通过构建ChainFileListFilter 并在spec.filter(...) 中使用它来解决一些短期需求。但是一般需要自定义 FileReadingMessageSource,希望通过 GitHub 问题提供。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多