Spring Clould Stream Устраняет входной канал динамически на основе сообщения - PullRequest
0 голосов
/ 11 апреля 2020

Мне нужен способ динамического разрешения входящего канала в зависимости от типа входящего сообщения. Я не ищу ни одного решения на основе заголовков, которое уже упоминалось в этой ссылке https://cloud.spring.io/spring-cloud-static/spring-cloud-stream/3.0.0.M1/spring-cloud-stream.html#_using_streamlistener_for_content_based_routing

Решение должно происходить в зависимости от типа сообщения. Если для запуска этого приложения существует настраиваемая привязка, которая может быть выполнена, это должно быть в порядке; Пожалуйста, дайте мне несколько примеров того, как этого можно достичь.

1 Ответ

2 голосов
/ 11 апреля 2020

В Spring Cloud Stream такой поддержки нет.

В базовом проекте Spring для Apache Kafka есть поддержка такого сценария ios.

См. @KafkaListener для класса .

Требуется, чтобы полезная нагрузка была десериализована десериализатором Kafka; тогда вызываемый метод зависит от типа полезной нагрузки.

Он также поддерживает резервный метод по умолчанию.

@KafkaListener(id = "multi", topics = "myTopic")
static class MultiListenerBean {

    @KafkaHandler
    public void listen(String foo) {
        ...
    }

    @KafkaHandler
    public void listen(Integer bar) {
        ...
    }

    @KafkaHandler(isDefault = true)
    public void listenDefault(Object object) {
        ...
    }

}
...