springboot整合kafka基本流程

配置

添加maven依赖

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

配置application.properties/application.yml(生产者)

#spring.kafka.bootstrap-servers=
spring.kafka.bootstrap-servers=
spring.kafka.consumer.group-id=temperatureHumidityDevice
spring.kafka.auto.create.topics.enable=true
spring.kafka.consumer.auto-offset-reset=latest
spring.kafka.consumer.enable-auto-commit=false
spring.kafka.consumer.auto-commit-interval=100
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.properties.max.poll.interval.ms=600000
spring.kafka.consumer.max-poll-records=1000
spring.kafka.topic.temperatureHumidityWarn=temperature_humidity_offline_warn

配置application.properties/application.yml(消费者)

#spring.kafka.bootstrap-servers=
spring.kafka.bootstrap-servers=
spring.kafka.consumer.group-id=videoMonitorDev
spring.kafka.auto.create.topics.enable=true
spring.kafka.consumer.auto-offset-reset=latest
spring.kafka.consumer.enable-auto-commit=false
spring.kafka.consumer.auto-commit-interval=100
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.properties.max.poll.interval.ms=600000
spring.kafka.consumer.max-poll-records=1000
spring.kafka.topic.videoMonitor=iot_video_monitor
spring.kafka.topic.iotBioSafe=iot_bio_safe
spring.kafka.topic.offline=ambient_offline_warn
spring.kafka.topic.tem-hum-offline-data-refresh=temperature_humidity_offline_warn

!关于是producer和consumer大哥说无所谓!

消息发送类实现

@Service
public class VboxCollectionFinishMessage  {
    @Resource
    private KafkaTemplate<String, String> kafkaTemplate;

    @Value("${spring.kafka.topic.temperatureHumidityWarn}")
    private String offlineTopic;

    /**
    *@author Administrator
    *@Description
    *@Date 2020/11/17
     *Param
    *@return
    */
    public void send(){

        Map<String,String>  message = new HashMap<>();
        message.put(UUID.randomUUID().toString(),String.valueOf(System.currentTimeMillis()));
        ListenableFuture future =  kafkaTemplate.send(offlineTopic,JSON.toJSONString(message));
        future.addCallback(o -> System.out.println("send-消息发送成功:" + message), throwable -> System.out.println("消息发送失败:" + message));
    }

}

ListenableFuture是java多线程异步调用,addCallback调用回调方法。

消息接收类实现

@Slf4j
@Component
public class TemAndHumDataRefreshListener {

    @Resource
    private ApplicationEventPublisher applicationEventPublisher;


    @KafkaListener(topics = {"${spring.kafka.topic.tem-hum-offline-data-refresh}"}, groupId = "${spring.kafka.consumer.group-id}")
    public <T> void listen(ConsumerRecord<T, String> record) {
        //log.info("接收到温湿度数据刷新事件,body{}", record.value());
        applicationEventPublisher.publishEvent(new DataRefreshEvent());
    }


}

参考文章:springboot整合kafka简单收发消息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值