公网kafka消费者带有账号密码方式的spring项目对接
最近接到一个对接的活,对方公司给出的是公网kafka模式,就是不断给你配置的消费者推送消息,并且是带有指定的账号密码方式。下面就给大家具体说一说我是怎么配置的和我配置过程中遇到的问题。
前提
需要几个前提哈
1.对接方开放公网地址
2.kafka启动的模式是需要账号密码的
3.我们的项目需要spring脚手架
第一步:确定kafka版本号
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.8.11</version>
</dependency>
我们这边用的是2.8.11 你们可以看下对方的接口文档,一般都会推荐你们使用指定的maven版本。
第二步:yaml配置
对应的参数,对接方一般会提前给到你们,如果没有找他们要即可。
注意:properties配置项,底下对应的参数名,使用点隔开的,不是换行
代码复制出来,方便你们复制
spring:
kafka:
bootstrap-servers: xxxxxx,xxxxxxx,xxxxx # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔
consumer:
group-id: xxxxx # 消费者组 ID
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
properties:
security.protocol: SASL_PLAINTEXT
sasl.mechanism: SCRAM-SHA-256
sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="xxxx" password="xxxxxxx";
第三步:消费者配置
@Component
@Slf4j
public class BarrierGateConsumer {
@KafkaListener(topics = "xxxx", groupId = "xxxx", concurrency = "3")
public void passingData(String message) {
log.error("Received passingData: {}", message);
}
}
好了。就这样配置完毕。启动项目没有报错,等待消息推送过来就好了。
扩展
有三点,不是很明白,也希望大家可以解答一下
1.如果我的项目是集群方式,kafka的消息是怎么发的,每个实例都发一遍还是随机找一个实例消费。
2.我们作为当方面的消费者,如何保证消息的可靠性。
3.如果我们的实例重启了,这个时候刚好有消息进来,那这消息会丢失么,还是说会等待实例启动起来会继续发。
博主新推出的gitee免费开源项目(商城+APP+小程序+H5),有兴趣的小伙伴可以了解一下。
生鲜商城kxmall-小程序 + App + 公众号H5: kxmall-生鲜商城+APP+小程序+H5。同时支持微信小程序、H5、安卓App、苹果App。支持集群部署,单机部署。可用于B2C商城,O2O外卖,社区超市,生鲜【带配套骑手端配送系统】。kxmall使用uniapp编码。使用Java开发,SpringBoot 2.1.x框架,MyBatis-plus持久层框架、Redis作为缓存、MySql作为数据库。前端vuejs作为开发语言。https://gitee.com/zhengkaixing/kxmall