Пользовательский MessageConverter для Spring Cloud Stream не используется при добавлении Spring Websocket в службу - PullRequest
0 голосов
/ 01 марта 2020

У меня есть микросервис Scs, который принимает сообщения из серии тем Kafka, все из которых имеют один и тот же абстрактный класс.

Я зарегистрировал пользовательский MessageConverter для десериализации сообщений JSON, которые используют это абстрактный класс.

Я хотел бы отправить sh эти сообщения, которые я получаю от Кафки через веб-сокет в интерфейс нашего интерфейса. Как только я добавил конфигурацию для брокера websocket, MessageConverter для Scs больше не использовался. Похоже, что MessageConverters, зарегистрированные для использования с веб-сокетом, имеют приоритет над тем, который я зарегистрировал для использования с Scs.

Я создал сокращенный пример здесь https://github.com/jarebudev/scs-websocket-messageconverter-demo чтобы продемонстрировать проблему - см. предоставленный модульный тест.

1 Ответ

0 голосов
/ 03 марта 2020

Отправка ответа на этот вопрос в случае, если кто-то еще столкнется с этой проблемой ...

Автоконфигурация из Spring Websocket мешала MessageConverter s из Spring Cloud Stream.

Исправление было сделано, см. https://github.com/spring-cloud/spring-cloud-stream/commit/eee1b1385c2864a32370a8e4758294d5efbe4cd5

Тем временем я обошел эту проблему, получив конфигурацию Spring Cloud Stream (содержащую @Bean для моего custom MessageConverter) для применения до Spring Websocket.

В моем случае оба моих класса конфигурации были в одном пакете.

До:

com.example.demo.config

  AppWebsocketConfig
  ScsConfig

После:

com.example.demo.config

  ScsConfig
  WebsocketConfig
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...