#java #apache-kafka
#java #apache-kafka
Вопрос:
Я пытаюсь использовать простой kafka POC с образцом производителя и потребителя. Сообщение, отправленное from console-producer
, получено at console-consumer
, но сообщение, отправленное from java kafka-clients producer
, не получено at console-consumer
. Ниже воспроизводимо,
kafka queue version : 2.6.0
kafka-clients version : 2.6.0
Java producer:
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer(props);
try {
producer.send(new ProducerRecord<String, String>("enricher-co", "POC Message"));
} catch (Exception e) {
throw e;
} finally {
producer.close();
}
}
Настройка очереди Kafka была выполнена в соответствии с рекомендациями, приведенными в https://kafka.apache.org/quickstart .
Это то, что работает на консоли, производитель консоли,
$./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic enricher-co
> Console POC
Консольный потребитель,
$./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic enricher-co
Console POC
Пожалуйста, помогите.
Комментарии:
1. возникает какое-либо исключение? попробуйте напечатать исключение в блоке catch. так что у вас есть несколько идей.
2. Код выполняется нормально без исключений. Я даже не видел никаких сообщений уровня отладки, которые, как я думал, помогут.
3. Это помогло бы увидеть консольные команды, которые работают, для сравнения. На первый взгляд код выглядит нормально. Я думаю, что вы создаете сообщение без ключа — я, честно говоря, понятия не имею, важно это или нет, потому что я никогда не пробовал.
4. В настоящее время вы создаете сообщения в режиме «запустить и забыть», поэтому вы не получите никакого ответа / исключения от Kafka. Пожалуйста, добавьте
.get()
в свойsend
вызов.5. @mike — да, я это знаю. Мне просто интересно, повлияет ли отсутствие ключа на доступность сообщений для потребителя, поскольку мы не знаем, как выполняется потребитель. Но я бы, конечно, согласился с
get()
.