spring boot + kafka 简单配置

本文介绍了如何配置和使用 Kafka,首先通过 wget 或网盘下载并安装 Kafka,然后配置远程访问,启动 Zookeeper 和 Kafka。接着验证 Kafka 功能,创建 topic 和生产者、消费者。最后展示了 Spring Boot 中的配置,包括 pom.xml 中的依赖版本选择以及 bootstrap.yml 的设置,并提供了生产者和消费者的模拟代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kafka 安装及配置

wget 有点慢,不想等的可以再网盘下载

wget https://archive.apache.org/dist/kafka/3.1.0/kafka_2.12-3.1.0.tgz

网盘提取

链接: https://pan.baidu.com/s/1zxbZHht7u6F-hBNRBiDnFw?pwd=jb5d

提取码: jb5d 

得到安装包之后,解压

tar -zxvf kafka_2.12-3.1.0.tgz

 在解压的目录下找到 config 文件夹

vi server.properties

编辑kafka的配置文件(我主要是配置了远程访问)

############################# Socket Server Settings #############################
#远程访问配置
listeners = PLAINTEXT://内网IP:9092
advertised.listeners=PLAINTEXT://公网IP:9092

启动zookeeper

回到 bin 目录

./zookeeper-server-start.sh ../config/zookeeper.properties &

启动 kafka

./kafka-server-start.sh server.properties &

验证环节

创建topic(bin 目录下执行)

kafka 3 不需要指定zookeeper

./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test1

创建生产者

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

 输入要发送的消息

创建消费者

./kafka-console-consumer.sh --bootstrap-server localhost:9092  --topic test --from-beginning

spring boot 配置

pom.xml 

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

2.8.3 可以搭配 上面安装的kafka 版本,太低的驱动版本会有兼容问题,比如2.4.1。

其他版本没有进行测试 

bootstrap.yml

spring:
    kafka:
        bootstrap-servers: 公网IP:9092
        producer: # producer 生产者
          retries: 0 # 重试次数
          acks: 1 # 应答级别:多少个分区副本备份完成时向生产者发送ack确认(可选0、1、all/-1)
          batch-size: 16384 # 批量大小
          buffer-memory: 33554432 # 生产端缓冲区大小

        consumer: # consumer消费者
          group-id: javagroup # 默认的消费组ID
          enable-auto-commit: true # 是否自动提交offset
          auto-commit-interval: 100  # 提交offset延时(接收到消息后多久提交offset)

生产者模拟代码

@RestController
public class KafkaProducer {
    @Resource
    private KafkaTemplate<String, Object> kafkaTemplate;

    @GetMapping("/kafka/test/{msg}")
    public void sendMessage(@PathVariable("msg") String msg) {
        kafkaTemplate.send("test", JSON.toJSONString(m));
    }
}

消费者模拟代码

@Slf4j
@Component
public class KafkaConsumer {

    //不指定group,默认取yml里配置的
    @KafkaListener(topics = {"test"})
    public void onMessage1(ConsumerRecord<?, ?> consumerRecord) {
        Optional<?> optional = Optional.ofNullable(consumerRecord.value());
        if (optional.isPresent()) {
            Object msg = optional.get();
            log.info("message:{}", msg);
        }
    }
}

### 使用 Spring Boot + Kafka + MySQL + HBase 实现分布式优惠券后台应用系统 #### 系统概述 该系统旨在利用现代技术栈构建一个高性能、高可用性的优惠券管理系统。通过结合Spring Boot的快速开发能力、Kafka的消息传递机制、MySQL的关系型数据库特性和HBase的大规模数据存储优势,我们能打造一个既满足传统事务处理需求又能适应大数据场景下复杂查询的应用程序。 --- #### 核心组件和技术选型说明 1. **Spring Boot** - 提供了强大的依赖注入和支持RESTful API的设计模式,简化了企业级Web应用和服务端开发流程。 - 内置了丰富的自动化配置选项,减少了繁琐的手动设置过程。 2. **Apache Kafka** - 拥有出色的水平伸缩能力和极高的吞吐率,在处理大量实时事件流方面表现卓越。 - 可作为消息中间件连接各个微服务模块之间的异步通信路径,确保每个环节都能稳定可靠地接收和发送通知。 3. **MySQL (RDBMS)** - 负责保存结构化的基础数据记录,比如用户的个人信息表单字段、订单详情以及其他需要强一致性和ACID特性保障的重要资料。 - 对于一些频繁更新但体量较小的关键资源来说非常适合用作持久化载体。 4. **Apache HBase** - 建立在Hadoop文件系统之上的一种非关系型分布式列族式NoSQL数据库。 - 特别适合用于存放海量的历史交易日志或者其他时间序列相关的长尾资产副本集。 --- #### 主要功能模块设计 - **用户认证与鉴权** - 集成OAuth2/OIDC协议实现安全登录校验;基于JWT(JSON Web Token)进行跨域令牌交换保护接口免受非法篡改攻击风险。 - **优惠券生命周期管理** - 创建 -> 发行 -> 查询 -> 回收等状态流转控制,支持按条件筛选导出Excel报表下载查看已发放清单明细。 - **消息驱动的任务调度引擎** - 利用Kafka Streams/KTable构造消费组监听来自其他来源产生的触发信号源,如限时抢购倒计时结束提醒、积分兑换成功与否反馈等情形下的即时响应动作规划。 - **混合存取的数据仓库** - 将短期内活跃度较高的常用项优先存入MySql内以提高检索速率,而长期沉淀下来不再变动的部分则迁移到成本较低廉却具备横向扩容潜力无限大的HBase集群里统一保管起来待查。 --- #### 数据流动示意图 ```plaintext [ 用户请求 ] --> [ Spring Boot 应用 ] | | [Kafka] <----> [ 各种外部服务 / 微服务 ] | [MySQL] [HBase] ``` 在这个架构图中: - 用户发起的所有交互操作都会先经过前端路由转发至后端的Spring Boot服务器实例。 - 关键任务结果(例如生成新批次优惠码)会被打包为JSON字符串形式投递进指定主题队列等待下游消费者提取解析并采取进一步措施。 - 最终达成一致性确认后的变更指令才会同步写回到对应的永久介质中去长久留存备忘录性质的作用。 --- ### 示例应用场景描述 假设现在有一个大型电商网站想要推出为期一周的新春大促活动,其中包含数百万张随机金额面值不固定的红包奖励派送机会。此时就可以依靠这套方案来支撑整个促销期间内的所有相关工作: - 运营团队提前准备好所需物料并在后台录入预设参数完成初步审核上线准备步骤; - 客户浏览页面看到心仪商品点击领取按钮瞬间激活一次获取专属福利的机会; - 如果运气好就能即刻享受到额外的价格减免实惠啦!与此同时后台会迅速核实身份有效性防止恶意刷奖行为发生; - 所有的历史互动痕迹均会被忠实记载下来形成一份详尽完备的日志文档随时可供审计查阅参考之需。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值