springboot集成kafka

前言

springboot 集成kafka 通过生产者与消费者,实现消息发送接收

依赖

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

生产者

  • 配置
    生产者配置
server:
  port: 8081
spring:
  application:
    name: kafka-producer
  kafka:
    bootstrap-servers: 192.168.1.206:9092,192.168.1.207:9092,192.168.1.208:9092
    template:
      default-topic: test_topic
    producer:
      retries: 1 # 发送消息失败重试次数
      batch-size: 16384 # 批量发送数据的配置,数据到这么多就发送
      acks: 1
      buffer-memory: 33554432 # 设置生产者内存缓存大小32M
      key-serializer: org.apache.kafka.common.serialization.StringSerializer # 序列化
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
  • 生产者代码
@Component
public class KafkaProducerService {
	
	@Value("${spring.application.template.default-topic}")
	private String test_topic;
    @Resource
    private KafkaTemplate<String,Object> kafkaTemplate;

    public void sendMessage(Object object){
        ListenableFuture<SendResult<String,Object>> future = kafkaTemplate.send(test_topic, object);
        future.addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
            @Override
            public void onFailure(Throwable e) {
                System.err.println("发送消息失败:"+e.toString());
            }

            @Override
            public void onSuccess(SendResult<String, Object> result) {
                System.out.println("发送消息成功:"+result.toString());
            }
        });
    }
}

消费者

依赖与消费者一样

  • 配置文件
server:
  port: 8082
spring:
  application:
    name: kafka-consumer
  kafka:
    bootstrap-servers: 192.168.1.206:9092,192.168.1.207:9092,192.168.1.208:9092
    consumer:
      enable-auto-commit: false # 不自动签收
      auto-offset-reset: earliest  # 接受所有消息,可以设置成 leatest接受最新
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    listener:
      ack-mode: manual # 手动签收
      concurrency: 2 # 启动多少个线程做监听
  • 消费者代码
@Component
public class KafkaConsumerService {

    @KafkaListener(groupId = "test_topic_group_01",topics = "test_topic")
    public void onMessage(ConsumerRecord<String,Object> record,
                          Acknowledgment acknowledgment,
                          Consumer<?,?> consumer){
        System.out.println("接受消息:"+record.value());
        //手工签收
        acknowledgment.acknowledge();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值