环境:
linux服务器
jdk1.8+
zookeeper
springboot2.1.4+kafaka2.2.5
开始搭建:
1.pom.xml:
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
2.application.yml:
spring:
kafka:
bootstrap-servers: 外网:9092
producer:
retries: 1
batch-size: 16384
buffer-memory: 33554432
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
bootstrap-servers: 外网:9092
consumer:
group-id: face-group
auto-offset-reset: earliest
enable-auto-commit: true
auto-commit-interval: 100
# 指定消息key和消息体的编解码方式
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
bootstrap-servers: 外网:9092
3.定义消息实体
kafakaMessage.java:
@Data
public class Message {
private Long id; //id
private String msg; //消息
}
4.消息发送类:
KafkaSender.java
@Component
@Slf4j
public class KafkaSender {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
private Gson gson = new GsonBuilder().create();
//发送消息方法
public void send() {
kafakaMessage message = new kafakaMessage();
message.setId(System.currentTimeMillis());
message.setMsg(UUID.randomUUID().toString());
log.info("+++++++++++++++++++++ message = {}", gson.toJson(message));
kafkaTemplate.send("zhisheng", gson.toJson(message));
}
}
5.消息接收类
KafkaReceiver.java:
@Component
@Slf4j
public class KafkaReceiver {
@KafkaListener(topics = {"zhisheng"})
public void listen(ConsumerRecord<?, ?> record) {
Optional<?> kafkaMessage = Optional.ofNullable(record.value());
if (kafkaMessage.isPresent()) {
Object message = kafkaMessage.get();
log.info("----------------- record =" + record);
log.info("------------------ message =" + message);
}
}
}
6.kafaka的一些其他命令:
1,start kafaka server:(需要先开启zookeeper)
> bin/kafka-server-start.sh config/server.properties
[2013-04-22 15:01:47,028] INFO Verifying properties (kafka.utils.VerifiableProperties)
[2013-04-22 15:01:47,051] INFO Property socket.send.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties)
...
2,创建topic:
> bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
3,查询topic:
> bin/kafka-topics.sh --list --bootstrap-server localhost:9092
test
4,测试发送信息:(注意,这里面关于localhost肯恩恶搞会有坑,下一篇文章会介绍)
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message
5,测试接收信息:(注意,这里面关于localhost肯恩恶搞会有坑,下一篇文章会介绍)
> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
This is a message
This is another message
更多精彩等你探索: