Nano Hash - криптовалюты, майнинг, программирование

Интеграция Spring | Поддержка реактивных потоков | Исключение при создании реактивного шлюза сообщений

Я пытаюсь обновить поток интеграции Spring в одном из моих существующих приложений с поддержкой Reactive Streams. Используемый подход состоит в том, чтобы изменить параметр и тип возвращаемого значения метода шлюза как Mono. Поток выполняется плавно, и когда ответ достигает шлюза, возникает исключение java.lang.IllegalArgumentException: beanFactory не должно иметь значение 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)

Кто-нибудь может помочь?


Ответы:


1

MessagingGatewaySupport.registerReplyMessageCorrelatorIfNecessary() должен быть исправлен для вызова endpoint.setBeanFactory(beanFactory); для ReactiveStreamsConsumer. По-видимому, у нас просто нет тестового примера, чтобы охватить replyChannel как FluxMessageChannel.

Подумайте о том, чтобы не использовать это replyChannel как временное решение. На самом деле это не имеет значения для такого потока: он уже реагирует на тип возврата Mono. Нет причин переключаться на другой реактивный поток внутри для корреляции ответов.

06.07.2020
  • Спасибо! Это сработало, удалив replyChannel, определенный в шлюзе. 07.07.2020
  • Ok. Я скоро внесу исправление, и вы скажете мне, можно ли вам принять ответ 07.07.2020
  • Вот исправление: github.com/spring-projects/spring-integration/pull / 3329. Пожалуйста, примите ответ: stackoverflow.com/help/someone-answers 07.07.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..