весенний облачный поток SOURCE с ключом, тип значения сообщения - PullRequest
0 голосов
/ 17 февраля 2020

Я пытался отправить сообщение с ключом, парой значений, используя весенний облачный поток. Я не могу найти API для этого. org.springframework.messaging.MessageChannel имеет полезную нагрузку только как часть функции отправки. Хотя с помощью шаблона Kafka это может быть достигнуто. Это единственный способ создания сообщения типа ключ-значение. Поскольку KafkaTemplate является частью пружины для apache kafka, я надеялся, что есть абстракция для этого в весеннем облачном потоке. Пожалуйста, предложите.

Спасибо,

1 Ответ

1 голос
/ 18 февраля 2020

Для целей вашего вопроса вы можете рассматривать Spring-Cloud-Stream как абстракцию более высокого уровня по сравнению с более низкоуровневыми API, такими как spring-kafka (если используется связыватель kafka), spring-интеграция et c. Другими словами, вам не нужно ни отправлять, ни получать что-либо явно в рамках фреймворка. Это сделает отправку и получение для вас; Это основная особенность фреймворка - привязать выполнение вашего кода к адресам ввода и вывода, которыми управляет ваш брокер. Все, что вам нужно сделать для вашего дела, это произвести Message. Например, вот полностью работающее приложение

@SpringBootApplication
public static class SupplierConfiguration {

    @Bean
    public Supplier<String> stringSupplier() {
        return () -> "Hello from Supplier";
    }
}

. Пока все, что вы сделали, это создало String, фреймворк поместит его в Message и отправит его в Kafka (при условии, что вы используете связыватель Kafka). Если вам необходимо явно контролировать значение ключа, вы можете вернуть фактический экземпляр сообщения с установленным значением kafka_messageKey. Например;

@SpringBootApplication
public static class SupplierConfiguration {

    @Bean
    public Supplier<Message<?>> stringSupplier() {
        return () -> MessageBuilder.withPayload("Hello from Supplier")
                   .setHeader(KafkaHeaders.MESSAGE_KEY, "blah")
                   .build();
    }
}

Подробнее об этом можно прочитать здесь

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

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