Quarkus框架集成Kafka

        Quarkus通过 SmallRye Reactive Messaging 框架为Apache Kafka提供支持。现将Quarkus框架集成Kafka分享下:

首先需引入maven包

<dependency>
   <groupId>io.quarkus</groupId>
   <artifactId>quarkus-smallrye-reactive-messaging-kafka</artifactId>
</dependency>

其次配置文件

在application.yml中增加配置

mp:
  messaging:
    outgoing: #生产者配置
      data-out:
        connector: smallrye-kafka
        deserializer: org.apache.kafka.common.serialization.StringSerializer
        topic: ${KAFKA_TOPIC}
        bootstrap:
          servers: ${KAFKA_SERVER}
    incoming:  #消费者配置
      data-in:
        connector: smallrye-kafka
        group:
          id: ${KAFKA_GROUP_ID}
        serializer: org.apache.kafka.common.serialization.StringSerializer
        topic: ${KAFKA_TOPIC}
        bootstrap:
          servers: ${KAFKA_SERVER}
        

或者增加application.properties文件,在此文件中配置

#kafka消费者配置
mp.messaging.incoming.data-in.connector=smallrye-kafka
mp.messaging.incoming.data-in.group.id=${KAFKA_GROUP_ID}
mp.messaging.incoming.data-in.topic=${KAFKA_TOPIC}
mp.messaging.incoming.iot-data.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
mp.messaging.incoming.data-in.auto.offset.reset=latest
mp.messaging.incoming.data-in.bootstrap.servers=${KAFKA_SERVER}

#kafka生产者配置
mp.messaging.outgoing.data-out.connector=smallrye-kafka
mp.messaging.outgoing.data-out.topic=${KAFKA_TOPIC}
mp.messaging.outgoing.data-out.value.serializer=org.apache.kafka.common.serialization.StringSerializer
mp.messaging.outgoing.iot-data.serializer=org.apache.kafka.common.serialization.StringSerializer
mp.messaging.outgoing.data-out.bootstrap.servers=${KAFKA_SERVER}

其中注意下:

        kafka broker地址可通过两种方式进行配置,如未提供引属性,则默认为 localhost:9092 

        1. 全局环境配置,则可用以下配置即可

kafka:
  bootstrap:
    servers: ${KAFKA_HOST}

        2. 若业务程度中需消费来源于不同kafka服务器的数据,则可在不同的channel中进行配置, 如下:

mp.messaging.outgoing.data-in.bootstrap.servers=${KAFKA_SERVER}

注意:其中data-in和data-out即channel-name。

常用配置说明:

incoming:消费者;outgoing:生产者

参数说明
connector配置smallrye-kafka值,管理channel。
iot-datachannel名称,incoming和outgoing都需要,可根据业务设置,在应用配置里面,channel名称是唯一的。因此,如果您打算在相同topic上同时配置一个接收和一个发送的channel,您需要对这两个 channels 使用不同的名称(比如本指南的例子,mp.messaging.incoming.prices 和 mp.messaging.outgoing.prices-out )。
topic        incoming和outgoing都需要        
value.deserializer
incoming消息反序列化,必需设置,outgoing无此参数
value.serializer
outgoing消息序列化,必需设置,incoming无此参数
group.id
消费者group,生产者无此参数
auto.offset.reset
消费顺序,earliest、latest。默认latest,即从最新消息开始消费;earliest即从最早消息开始消费。生产者无此参数

最后编写逻辑代码

Kafka生产者

@ApplicationScoped
public class KafkaProducerService {
    @Inject
    @Channel("data-out")
    Emitter<String> iotDataEmitter;

    public void sendMessage(String message) {
        //发送消息
        iotDataEmitter.send(message);
    }
}

Kafka消费者

public class KafkaConsumerService {


    @Incoming("data-in")
    @Blocking
    public void consume(String message) {
        //TODO 处理消息
    }

大家也可参考官网说明:Apache Kafka参考指南 - Quarkus

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SSM框架集成Kafka可以实现消息的异步处理和分布式消息队列的功能。下面是集成步骤的概述: 1. 首先,你需要在项目中引入Kafka的相关依赖。可以通过在项目的pom.xml文件中添加以下依赖来实现: ```xml <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.0</version> </dependency> ``` 2. 在Spring配置文件中配置Kafka的相关信息。可以创建一个kafka-producer.xml文件用于配置Kafka的生产者,和一个kafka-consumer.xml文件用于配置Kafka的消费者。在这些配置文件中,你需要配置Kafka的连接地址、序列化方式等信息。 3. 创建Kafka生产者和消费者的实例。在SSM框架中,可以通过使用Spring的注解来创建生产者和消费者的实例。例如,可以使用`@Autowired`注解将生产者和消费者注入到需要使用它们的类中。 4. 在需要发送消息的地方调用生产者发送消息。你可以在任何需要发送消息的地方调用生产者的发送方法来发送消息到Kafka。 5. 在消费者中编写处理消息的逻辑。消费者需要实现Kafka提供的`ConsumerRebalanceListener`接口,并在`onPartitionsAssigned`方法中编写处理消息的逻辑。可以使用`@KafkaListener`注解将消费者方法与指定的topic关联起来,这样消费者就会自动监听并处理对应的消息。 以上是SSM框架集成Kafka的大致步骤,具体的实现细节会根据你的项目需求和具体的业务场景而有所差异。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值