没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1
消息队列:Pulsar:Pulsar 的 Topic 管理与操作
1 消息队列:Pulsar:Pulsar 的 Topic 管理与操作
1.1 Pulsar 基础概念
1.1.1 Pulsar 架构简介
Apache Pulsar 是一个分布式消息和流平台,提供消息队列和流处理功能。
它由以下主要组件构成:
� Broker:负责消息的路由和管理,处理客户端的请求。
� ZooKeeper:用于存储集群的元数据,如 topic 的配置和状态。
� BookKeeper:提供持久化存储,确保消息的可靠存储和传输。
� Function Worker:执行流处理和数据处理任务。
� Pulsar Manager:提供管理界面和 API,用于监控和管理 Pulsar 集
群。
Pulsar 的设计使其能够支持高吞吐量、低延迟和大规模的分布式部署,同
时保证消息的持久性和一致性。
1.1.2 Topic 与 Subscription 的基本理解
在 Pulsar 中,Topic 是消息的发布和订阅的基本单位。一个 topic 可以有多
个生产者和消费者,生产者向 topic 发布消息,消费者从 topic 订阅消息。Topic
可以是持久的或非持久的,持久 topic 的消息会被存储在 BookKeeper 上,非持
久 topic 的消息则不会被存储。
Subscription 是消费者对 topic 的订阅,一个 topic 可以有多个 subscription,
每个 subscription 可以有多个消费者。Subscription 有以下几种类型:
� Exclusive:只有一个消费者可以订阅,其他消费者将无法订阅。
� Shared:多个消费者可以订阅,消息会被均匀地分发给所有消费
者。
� Failover:多个消费者可以订阅,但一次只有一个消费者可以接收
消息,如果当前消费者失败,消息将被传递给下一个消费者。
� Key_Shared:基于消息的 key 进行分发,相同 key 的消息会被发
送给同一个消费者。
� Sticky:类似于 Shared,但消息分发策略更复杂,可以基于消费者
的状态进行优化。
2
1.2 Topic 管理与操作
1.2.1 创建 Topic
在 Pulsar 中,可以通过 pulsar-admin 命令行工具或通过 Pulsar 的管理 API
来创建 topic。以下是一个使用 pulsar-admin 创建 topic 的例子:
bin/pulsar-admin topics create persistent://public/default/my-topic
1.2.2 消息发布
生产者可以使用 Pulsar 客户端库来发布消息到 topic。以下是一个使用 Java
客户端库发布消息的示例:
import org.apache.pulsar.client.api.*;
public class Producer {
public static void main(String[] args) throws PulsarClientException {
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://localhost:6650")
.build();
Producer producer = client.newProducer(Schema.STRING)
.topic("persistent://public/default/my-topic")
.create();
for (int i = 0; i < 10; i++) {
String message = "Hello Pulsar " + i;
producer.send(message);
}
producer.close();
client.close();
}
}
1.2.3 消息订阅
消费者可以订阅 topic 来接收消息。以下是一个使用 Java 客户端库订阅
topic 的示例:
import org.apache.pulsar.client.api.*;
public class Consumer {
public static void main(String[] args) throws PulsarClientException {
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://localhost:6650")
.build();
3
Consumer consumer = client.newConsumer(Schema.STRING)
.topic("persistent://public/default/my-topic")
.subscriptionName("my-subscription")
.subscribe();
while (true) {
Message msg = consumer.receive();
System.out.println("Received message: " + new String(msg.getData()));
consumer.acknowledge(msg);
}
}
}
1.2.4 Topic 的管理操作
Pulsar 提供了丰富的管理 API 来操作 topic,包括查看 topic 信息、删除
topic、设置 topic 策略等。以下是一个使用 pulsar-admin 查看 topic 信息的例子:
bin/pulsar-admin topics get-stats persistent://public/default/my-topic
1.2.5 Topic 的策略设置
可以设置 topic 的策略,如消息的保留策略、消息的分片策略等。以下是一
个使用 pulsar-admin 设置消息保留策略的例子:
bin/pulsar-admin topics set-retention persistent://public/default/my-topic --retention-time-in-h
ours 24 --retention-size-in-mb 1024
1.2.6 Topic 的删除
当不再需要一个 topic 时,可以使用 pulsar-admin 命令来删除它:
bin/pulsar-admin topics delete persistent://public/default/my-topic
1.3 总结
通过上述内容,我们了解了 Pulsar 的基本架构,以及如何管理和操作 topic。
Pulsar 的 Topic 和 Subscription 机制为消息的发布和订阅提供了灵活和强大的支
持,使得 Pulsar 能够满足各种消息和流处理的需求。
注意:上述代码示例和命令行操作需要在已经部署了 Pulsar 集群的环境中
运行,并且需要相应的客户端库和管理工具。在实际使用中,应根据具体环境
和需求进行相应的配置和调整。
4
2 消息队列:Pulsar:Topic 的创建与管理
2.1 使用 PulsarAdmin 创建 Topic
在 Apache Pulsar 中,Topic 是消息的容器,所有发送和接收的消息都通过
特定的 Topic 进行。PulsarAdmin 是一个用于管理 Pulsar 集群的工具,提供了丰
富的 API 来创建、删除和管理 Topics。
2.1.1 创建 Topic
要使用 PulsarAdmin 创建一个 Topic,首先需要确保 PulsarAdmin 工具已经
安装并配置正确。以下是一个使用 PulsarAdmin 创建 Topic 的示例代码:
#
使用
PulsarAdmin
创建一个名为
my-topic
的
Topic
pulsar-admin topics create-topic persistent://my-tenant/my-namespace/my-topic
在上述命令中,persistent://my-tenant/my-namespace/my-topic 是 Topic 的
完整路径,其中 my-tenant 和 my-namespace 是 Pulsar 集群中的租户和命名空间,
my-topic 是 Topic 的名称。
2.1.2 管理 Topic 的生命周期
PulsarAdmin 还提供了管理 Topic 生命周期的方法,包括删除 Topic:
#
删除名为
my-topic
的
Topic
pulsar-admin topics delete persistent://my-tenant/my-namespace/my-topic
2.2 Topic 的类型与选择
Pulsar 支持多种 Topic 类型,每种类型都有其特定的使用场景和特性:
2.2.1 Persistent Topic
这是最常见的 Topic 类型,用于持久化消息,即使 Broker 重启,消息也不
会丢失。
2.2.2 Non-Persistent Topic
这种 Topic 类型不持久化消息,适用于对延迟敏感的场景,因为消息直接
存储在内存中,不写入磁盘。
2.2.3 Partitioned Topic
当需要处理大量消息或高吞吐量时,可以使用分区 Topic。一个分区 Topic
可以被分割成多个分区,每个分区都是一个独立的 Topic,可以并行处理消息。
剩余18页未读,继续阅读
资源评论
kkchenjj
- 粉丝: 2w+
- 资源: 5479
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功