1、Pulsar Topic(主题) 相关操作_基础操作
Topic:话题主题的含义,在一个名称空间下,可以定义多个Topic 通过Topic进行数据的分类划分,将不同的类别的消息放置到不同Topic,消费者也可以从不同Topic中获取到相关的消息,是一种更细粒度的消息划分操作,同时在Topic下可以划分为多个分片,进行分布式的存储操作,每个分片下还存在有副本操作,保证数据不丢失,当然这些分片副本更多是由bookkeeper来提供支持。
Pulsar 提供持久化与非持久化两种topic。 持久化topic是消息发布、消费的逻辑端点。 持久化topic地址的命名格式如下:
persistent://tenant/namespace/topic
非持久topic应用在仅消费实时发布消息与不需要持久化保证的应用程序。 通过这种方式,它通过删除持久消息的开销来减少消息发布延迟。 非持久化topic地址的命名格式如下:
non-persistent://tenant/namespace/topic
1.1 创建Topic
- 创建无分区的topic
[root@pulsar1 apache-pulsar-2.9.1]# bin/pulsar-admin topics create non-persistent://my-tenant/my-ns/my-non-partitioned-topic
[root@pulsar1 apache-pulsar-2.9.1]#
- 创建有分区的topic
bin/pulsar-admin topics create-partitioned-topic persistent://my-tenant/my-ns/my-partitioned-topic --partitions 3
- 列出namespace下的所有topic
bin/pulsar-admin topics list my-tenant/my-ns
"persistent://my-tenant/my-ns/my-partitioned-topic-partition-0"
"persistent://my-tenant/my-ns/my-partitioned-topic-partition-1"
"persistent://my-tenant/my-ns/my-partitioned-topic-partition-2"
可以看到my-non-partitioned-topic这个topic已经被删除了。这是因为一个topic被创建后,如果在创建后的60秒内不活动,就会被自动删除。可以通过如下两个参数进行控制
- Brokerdeleteinactivetopicsenabenabled:表示是否启动自动删除,默认值为true
- BrokerDeleteInactiveTopicsFrequencySeconds:表示不活动的时间,默认为60s
1.2 更新topic
bin/pulsar-admin topics update-partitioned-topic persistent://my-tenant/my-ns/my-partitioned-topic --partitions 6
1.3 删除topic
- 删除无分区topic
bin/pulsar-admin topics delete non-persistent://my-tenant/my-ns/my-non-partitioned-topic
- 删除有分区topic
bin/pulsar-admin topics delete-partitioned-topic persistent://my-tenant/my-ns/my-partitioned-topic
1.4 列出topic下的subscriptions
bin/pulsar-admin topics subscriptions persistent://public/default/my-partitioned-topic
"consume-test"
1.5 删除topic下的subscription
- 需要该subscription没有active consumer
bin/pulsar-admin topics unsubscribe -s "consume-test" persistent://public/my-partitioned-topic
2、 Pulsar Topic(主题) 相关操作_高级操作
2.1 授权
pulsar-admin topics grant-permission --actions produce,consume --role application1 persistent://test- tenant/ns1/tp1
2.2 获取权限
pulsar-admin topics grant-permission --actions produce,consume --role application1 persistent://test- tenant/ns1/tp1
2.3 取消权限
pulsar-admin topics revoke-permission --role application1 persistent://test-tenant/ns1/tp1
{
"application1": [
"consume",
"produce"
]
}