springboot2+kafaka2搭建

环境:

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

更多精彩等你探索:

http://kafka.apache.org/quickstart

在Spring Boot项目中集成Apache Kafka,主要涉及依赖的导入、Kafka的基本配置以及消息生产者和消费者的实现。以下是具体的步骤说明: ### 添加Maven依赖 首先,在`pom.xml`文件中添加Spring Kafka的核心依赖。这是使用Spring Boot操作Kafka的基础组件: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> ``` 此依赖包含了`KafkaTemplate`用于发送消息,以及`@KafkaListener`注解用于接收消息[^3]。 ### 配置Kafka属性 接下来,在`application.yml`或`application.properties`文件中配置Kafka的相关属性。以下是一个典型的YAML格式配置示例: ```yaml spring: kafka: bootstrap-servers: localhost:9092 producer: batch-size: 16384 buffer-memory: 67108864 acks: 1 compression-type: lz4 key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.apache.kafka.common.serialization.StringSerializer consumer: enable-auto-commit: true auto-offset-reset: latest key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer ``` 这段配置定义了Kafka服务器地址、生产者消费者的序列化/反序列化器及一些高级设置,比如批量大小、缓冲内存等[^4]。 ### 创建Kafka生产者配置类(可选) 如果需要对生产者进行更详细的定制化配置,可以创建一个配置类来定义`KafkaTemplate` Bean。例如: ```java @Configuration public class KafkaProducerConfig { @Bean public ProducerFactory<String, String> producerFactory() { Map<String, Object> configProps = new HashMap<>(); configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); return new DefaultKafkaProducerFactory<>(configProps); } @Bean public KafkaTemplate<String, String> kafkaTemplate() { return new KafkaTemplate<>(producerFactory()); } } ``` 通过该配置类,可以更加灵活地控制Kafka生产者的运行方式[^4]。 ### 实现消息消费者 对于消息消费者的实现,可以通过`@KafkaListener`注解监听特定的主题,并处理接收到的消息。例如,下面的代码展示了如何监听名为`test-topic`的主题并打印出接收到的消息内容: ```java @Component public class KafkaConsumer { @KafkaListener(topics = "test-topic", groupId = "group_id") public void consume(String message) { System.out.println("Received message: " + message); } } ``` 在这个例子中,每当有新的消息发布到`test-topic`主题时,`consume`方法就会被调用,并输出消息内容[^2]。 以上就是在Spring Boot项目中导入和配置Apache Kafka的主要步骤。这些步骤涵盖了从环境搭建到基本功能实现的全过程,能够帮助开发者快速上手Kafka的应用开发。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值