在Apache Kafka中,可以通过设置消息的键为null来发送没有键的消息。下面是一个使用Java代码示例的解决方法:
import org.apache.kafka.clients.producer.*;
import java.util.Properties;
public class KafkaProducerExample {
public static void main(String[] args) {
// 设置Kafka生产者配置
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");
// 创建Kafka生产者
Producer producer = new KafkaProducer<>(props);
try {
// 发送没有键的消息
ProducerRecord record = new ProducerRecord<>("my_topic", null, "Hello Kafka!");
producer.send(record, new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
if (exception == null) {
System.out.println("消息发送成功,偏移量:" + metadata.offset());
} else {
System.err.println("消息发送失败:" + exception.getMessage());
}
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭Kafka生产者
producer.close();
}
}
}
上述代码使用了Kafka的Java客户端库,并创建了一个Kafka生产者,然后发送了一个没有键的消息到名为"my_topic"的主题中。在发送时,将消息的键设置为null,并在发送完成后打印出偏移量。