Pulsar是由Apache基金会孵化的一款分布式消息处理平台,它具备如下特点:
在使用Pulsar之前,需要先了解Pulsar的一些核心概念。
Topic是消息发布和订阅的逻辑地址,可以理解为消息的目的地。Pulsar的Topic采用的命名规则是“pulsar://tenant/namespace/topic”,其中tenant是租户标识,namespace是命名空间标识,topic是Topic名称。
Producer是消息的生产者,用于往Topic中发送消息。一个Topic可以有多个Producer。
Consumer是消息的消费者,用于从Topic中消费消息。一个Topic可以有多个Consumer。
Subscription是一种消费模式,用于控制Consumer如何消费消息。Pulsar支持两种Subscription类型:Exclusive Subscription和Shared Subscription。
Message是Pulsar中的消息对象,可以包含任何数据。在Pulsar中,一条消息由三个部分组成:Payload、Key、Properties。Payload是消息的内容,Key是消息的唯一标识,Properties是消息的一些属性信息,可以用于筛选和路由消息。
在开始使用Pulsar之前,需要先安装Java 8+和Maven。另外,建议使用Linux系统来运行Pulsar。
Pulsar可以通过源码编译和二进制发行版两种方式来安装。
git clone https://github.com/apache/pulsar.git
cd pulsar
mvn clean install -DskipTests
在pulsar/distribution/server/target目录下可以找到生成的二进制包。
tar xvfz apache-pulsar-2.8.0-incubating-bin.tar.gz
cd apache-pulsar-2.8.0-incubating
wget https://archive.apache.org/dist/incubator/pulsar/pulsar-2.8.0-incubating/apache-pulsar-2.8.0-incubating-bin.tar.gz
tar xvfz apache-pulsar-2.8.0-incubating-bin.tar.gz
cd apache-pulsar-2.8.0-incubating
在Pulsar的bin目录下,执行如下命令启动Pulsar服务:
./pulsar standalone
这里启动的是单机版的Pulsar服务,如果要启动分布式Pulsar服务,需要修改配置文件,具体配置方式请参考Pulsar官方文档。
在Pulsar的bin目录下,执行如下命令关闭Pulsar服务:
./pulsar-daemon stop standalone
Pulsar的Java客户端支持生产者和消费者的编程,可以通过Maven来引入Java客户端的依赖项。
引入Java客户端的依赖项:
org.apache.pulsar
pulsar-client
2.8.0-incubating
在Pulsar中发送消息需要创建一个Producer对象,然后使用Producer对象来发送消息。
创建Producer的代码如下:
Producer<String> producer = PulsarClient.builder()
.serviceUrl("pulsar://localhost:6650")
.build()
.newProducer(Schema.STRING)
.topic("my-topic");
其中,serviceUrl是Pulsar服务的地址,Schema.STRING表示发送的数据类型为字符串,topic是消息目的地。
使用Producer对象发送消息:
producer.send("hello world");
在Pulsar中接收消息需要创建一个Consumer对象,然后使用Consumer对象来接收消息。
创建Consumer的代码如下:
Consumer<String> consumer = PulsarClient.builder()
.serviceUrl("pulsar://localhost:6650")
.build()
.newConsumer(Schema.STRING)
.topic("my-topic")
.subscriptionName("my-subscription")
.subscriptionType(SubscriptionType.Exclusive)
.subscribe();
其中,serviceUrl是Pulsar服务的地址,Schema.STRING表示接收的数据类型为字符串,topic是消息目的地,subscriptionName是订阅者名称,subscriptionType是订阅类型。
接收消息的代码如下:
while (true) {
Message<String> message = consumer.receive();
System.out.println("Received message: " + message.getValue());
consumer.acknowledge(message);
}
Pulsar提供了Web管理界面,可以通过Web界面来管理Pulsar服务。
访问Web管理界面的地址为:http://localhost:8080,其中localhost为Pulsar服务所在的主机名或IP地址。
Pulsar还提供了命令行工具pulsar-admin,可以通过pulsar-admin来管理Pulsar服务。
使用pulsar-admin查看集群信息的命令如下:
bin/pulsar-admin clusters list
使用pulsar-admin查看Tenant信息的命令如下:
bin/pulsar-admin tenants list
使用pulsar-admin查看Namespace信息的命令如下:
bin/pulsar-admin namespaces list
使用pulsar-admin查看Topic信息的命令如下:
bin/pulsar-admin topics list
使用pulsar-admin创建Topic的命令如下:
bin/pulsar-admin topics create persistent://public/default/my-topic
使用pulsar-admin删除Topic的命令如下:
bin/pulsar-admin topics delete persistent://public/default/my-topic
Pulsar是一款高性能、可扩展、可靠的分布式消息处理平台,具备多种语言支持和易于使用的API。通过本文的介绍,你应该已经掌握了Pulsar的核心概念、安装和使用方法,以及如何使用Pulsar的Java客户端来发送和接收消息。如果想要深入了解和使用Pulsar,建议参考P