docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
docker run -d --name kafka --publish 9092:9092 --link zookeeper
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
--env KAFKA_ADVERTISED_HOST_NAME=localhost
--env KAFKA_ADVERTISED_PORT=9092
wurstmeister/kafka
docker exec -it kafka /bin/bash
创建主题
/opt/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic mytp
运行生产者
cd /opt/kafka/bin
kafka-console-producer.sh --broker-list localhost:9092 --topic mytp
Springboot
@Autowired
private KafkaTemplate<String, Object> kafkaTemplate;
@GetMapping("/t1/{message}")
public void sendMessage1(@PathVariable("message") String message) {
kafkaTemplate.send("topic1", message);
}
@GetMapping("/t2/{message}")
public void sendMessage4(@PathVariable("message") String message) {
kafkaTemplate.send("topic2", message);
}
@KafkaListener(topics = { "topic1" })
public void onMessage1(ConsumerRecord<?, ?> record) {
System.out.println("message: " + record.topic() + "-" + record.partition() + "-" + record.value());
}
@KafkaListener(topics = { "topic2" })
@SendTo("topic1")
public String onMessage2(ConsumerRecord<?, ?> record) {
return "forward message to topic1: " + record.value();
}