Потребление сообщения Kafka с настраиваемым заголовкомJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Потребление сообщения Kafka с настраиваемым заголовком

Сообщение Anonymous »

Я пытаюсь создать потребителя Kafka с помощью Spring Cloud Stream, чтобы прослушивать сообщение Kafka, созданное вне любого контекста Spring, с настраиваемым заголовком (operationType).

Я использую Spring Boot 1.5.x/Spring Cloud Egdware.SR5 и версию 1.1.1 kafka-client и kafka_2.11.

Мой класс Listener содержит этот метод

Код: Выделить всё

@StreamListener(value = "dataset-changed", condition = "headers['operationType']=='UPDATE'")
public void onEvent(@Payload DatasetChangedMessage payload) {
// my code should be execute only if the header operationType == UPDATE
}
Конфигурация Spring Cloud Stream

Код: Выделить всё

spring.cloud.stream:
bindings:
dataset-changed:
group: preparation
content-type: application/json
destination: dataset-changed
consumer:
headerMode: raw
configuration:
key.deserializer: org.apache.kafka.common.serialization.ByteArrayDeserializer
value.deserializer: org.apache.kafka.common.serialization.StringDeserializer
Производитель представляет собой простой Java-документ с библиотекой kafka-client:1.1.1

Код: Выделить всё

Properties producerConfig = new Properties();
producerConfig.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
producerConfig.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.ByteArraySerializer");
producerConfig.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");

KafkaProducer producer = new KafkaProducer(producerConfig);

// Headers (to condition the kafka listener)
final List headers = new ArrayList();
headers.add(new RecordHeader("operationType", "UPDATE".getBytes()));

ProducerRecord record =
new ProducerRecord("dataset-changed", 0, "111".getBytes(), getJsonPayload(), headers);
Future future = producer.send(record);
future.get();

producer.close();
Когда я создаю сообщение Кафки, у меня появляются такие предупреждения

Код: Выделить всё

2019-03-15 14:48:32.103  WARN [tdp-preparation,1e24b9764ef9bb14,1e24b9764ef9bb14,false] 34760 --- [           -L-1] .DispatchingStreamListenerMessageHandler : Cannot find a @StreamListener matching for message with id: ea27a446-69da-7b8d-1b94-50b46a40dfde
при наличии заголовка OperationType

Изображение


Подробнее здесь: https://stackoverflow.com/questions/551 ... tom-header
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»