介绍
在上一篇文章《新一代消息队列Pulsar-安装部署》中,介绍了如何安装部署Pulsar,那如何通过API接入呢?本文将通过springboot集成的方式来介绍
引入pulsar依赖包
<dependency>
<groupId>io.github.majusko</groupId>
<artifactId>pulsar-java-spring-boot-starter</artifactId>
<version>1.0.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.projectreactor/reactor-core -->
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.4.11</version>
</dependency>
以上maven pom引入不管是消息发送端还是消息消费端都要引入
修改application.yaml配置文件
pulsar:
# 命名空间名称
namespace: pulsar/test
# 服务接入地址
service-url: http://127.0.0.1:8088
# 授权角色密钥
token-auth-value: eyJrZXlJZC....
# 集群名称
tenant: pulsar
以上yaml文件的内容不管是消息发送端还是消息消费端都要进行调整
消息生产端
增加生产者配置
/**
* pulsar生产者配置
* 配置需要发送消息的TOPIC
*/
@Configuration
public class ProducerConfiguration {
@Bean
public ProducerFactory producerFactory() {
return new ProducerFactory()
// topic1
.addProducer("topic1");
}
}
发送消息
@Autowired
private PulsarTemplate<byte[]> defaultProducer;
List<String> values = new ArrayList<>();
values.add("zhangsan");
values.add("test");
String message = JSON.toJSONString(values);
defaultProducer.sendAsync(CommonConstant.LOG_TOPIC,message.getBytes(StandardCharsets.UTF_8));
消息消费端
@PulsarConsumer(topic = "topic1", // 订阅topic名称
subscriptionName = "subs-topic1", // 订阅名称
serialization = Serialization.JSON, // 序列化方式
subscriptionType = SubscriptionType.Shared, // 订阅模式,默认为独占模式
consumerName = "Topic1Consumer", // 消费者名称
maxRedeliverCount = 3, // 最大重试次数
deadLetterTopic = "topic1-DLQ" // 死信topic名称
)
public void topicConsume(byte[] msg) throws Exception{
// TODO process your message
String message = new String(msg);
System.out.println("Received a new message. content: " + message);
// 如果消费失败,请抛出异常,这样消息会进入重试队列,之后可以重新消费,直到达到最大重试次数之后,进入死信队列。前提是要创建重试和死信topic
}