linux操作kafka+springboot集成kafka

linux操作kafka

①下载kafka压缩包

②上传到linux然后使用命令解压

tar -zxvf kafka_2.10-0.10.0.1.tgz

③修改kafka的配置(进入到kafka文件的config目录下)

vim server.properties

broker.id=0//This must be set to a unique integer for each broker
advertised.listeners=PLAINTEXT://192.168.0.108:9092:远程连接需要配置下(0.9.0.1版本没有这个问题)
log.dirs=/usr/local/kafka_2.11-0.9.0.1/kafka-logs//默认的是不会持久化存储的,这里必须更改下
zookeeper.connect=//zookeeper的连接地址:根据实际进行配置

④修改kafka内置zookeeper的配置(进入到kafka文件的config目录下)

vim zookeeper.properties

dataDir=/usr/local/kafka/zookeeper #zookeeper数据目录

dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日志目录

clientPort=2181

maxClientCnxns=100

tickTime=2000

initLimit=10

syncLimit=5

(这里每启动一个都是一个独立窗口)

⑤开启zookeeper

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
(这个是后台运行zookeeper的命令)

⑥开启kafka

bin/kafka-server-start.sh config/server.properties

⑦创建topic主题(这里的主题名字是test)

bin/kafka-topics.sh --create --topic test --bootstrap-server 192.168.83.128:9092 -partitions 3 -replication-factor 1

⑧启动生产者连接主题

bin/kafka-console-producer.sh --broker-list 192.168.83.128:9092 --topic test

⑨启动消费者连接主题

bin/kafka-console-consumer.sh --bootstrap-server 192.168.83.128:9092 --topic test

然后就可以进行发送消息了

springboot集成kafka

(本地记得启动zookeeper和kafka,windows可以通过cmd来启动)
目录结构:
在这里插入图片描述

依赖

        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.4.2.RELEASE</version>
        </dependency>

配置

kafka:
    bootstrap-servers: 127.0.0.1:9092
    consumer:
      enable-auto-commit: true
      group-id: test
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    topic: springboot-kafka

生产者

@Slf4j
@Component
public class Producer {

    @Autowired
    private KafkaTemplate kafkaTemplate;

    @Value("${spring.kafka.topic}")     //引入application.properties中的数据
    private String topics;

    public void send(String jsonString) {
        log.info("待发送的消息:{}", jsonString);
        kafkaTemplate.send(topics, jsonString);
    }

}

消费者:

@Slf4j
@Component
public class Consumer {

    @KafkaListener(topics = "${spring.kafka.topic}")
    public void receiver(ConsumerRecord record) {
        log.info("接收到的数据:topic={},message={}", record.topic(), record.value());
    }
}

控制器:

@RestController
@RequestMapping("/kafka")
public class KafkaController {

    @Autowired
    private  Producer producer;


    @RequestMapping("/send")
    public void sendMsg() {
        for (int i = 0; i < 10; i++) {
            producer.send("发送第" + (i + 1) + "条信息!");
        }
    }
}

效果:
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值