Pulsar消费者的使用–注解使用
前提:
在项目中引入 Pulsar Starter 相关依赖。
<dependency>
<groupId>io.github.majusko</groupId>
<artifactId>pulsar-java-spring-boot-starter</artifactId>
<version>1.0.7</version>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.4.11</version>
</dependency>
再者使用说明:
@PulsarConsumer
是Pulsar的Java客户端库中的一个注解,用于标识一个方法为一个Pulsar消费者。
Pulsar是一个开源的分布式消息传递系统,@PulsarConsumer
注解使 Java 开发人员能够轻松地编写具有类似于 JMS 订阅者的应用程序。使用@PulsarConsumer注解可以将一个普通的方法声明为消费者,并订阅Pulsar主题。
这个注解有多个参数,它们的含义如下:
topic
:指定要消费的Pulsar主题名称。subscriptionName
:指定订阅的名称。consumerName
:指定消费者的名称。type
:指定订阅的消息类型(如JSON,AVRO等)。schemaClass
:当消息类型为自定义类型时,指定消息类型的类。subscriptionType
:指定订阅的类型(exclusive,shared,failover)。subscriptionInitialPosition
:指定消费者初始偏移量(如earliest,latest,specified)。
使用示例:
@PulsarConsumer(
topic = "my-topic",
subscriptionName = "my-subscription",
consumerName = "my-consumer",
type = SchemaType.JSON,
schemaClass = MyMessage.class,
subscriptionType = SubscriptionType.Shared,
subscriptionInitialPosition = SubscriptionInitialPosition.Earliest
)
public void onMessageReceived(MyMessage message, MessageId messageId) {
// 消费消息的逻辑
}
在这个例子中,我们定义了一个带有 @PulsarConsumer
注解的方法 onMessageReceived()
,用于订阅名为 “my-topic” 的 Pulsar 主题。MyMessage
是消息的类型,MessageId
则是消息的标识符。当 Pulsar 传递新消息到 “my-topic” 主题时,onMessageReceived()
方法将会被自动调用,从而可以在方法内部处理消息。
需要注意的是,使用 @PulsarConsumer
注解的方法必须满足以下条件:
- 方法必须是无参方法。
- 方法的返回类型必须是
void
。 - 方法的访问修饰符必须是
public
。 - 该方法必须与
@Component
或其他 Spring 支持的注解一起使用,以允许 Spring 自动发现和管理被注解的方法。