上云无忧 > 文档中心 > 腾讯云消息队列 Pulsar 版 - 使用 SDK 收发普通消息:下载并运行 Demo
消息队列 Pulsar 版
腾讯云消息队列 Pulsar 版 - 使用 SDK 收发普通消息:下载并运行 Demo

文档简介:
操作场景: 该任务指导您在购买 TDMQ Pulsar 版服务和腾讯云服务器后,下载 Demo 并进行简单的测试,了解运行一个客户端的操作步骤。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

该任务指导您在购买 TDMQ Pulsar 版服务和腾讯云服务器后,下载 Demo 并进行简单的测试,了解运行一个客户端的操作步骤。
说明
本示例以 Java 客户端为例说明,其他语言客户端请参见 SDK 文档

前提条件

购买云服务器
说明:
云服务器所在的地域和私有网络要和已创建的 Pulsar 集群保持一致。

操作步骤

1. 下载 Demo(Demo 下载地址),并配置相关参数。
关于 Maven 依赖 pom.xml 文件中的依赖是按照 Pulsar 的官方依赖进行配置的,详情可以参见 其官方文档
		
<!-- in your <properties> block -->
<pulsar.version>2.7.2</pulsar.version>
<!-- in your <dependencies> block -->
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-client</artifactId>
<version>${pulsar.version}</version>
</dependency>
创建 Client
		
// 一个Pulsar client对应一个客户端链接
// 原则上一个进程一个client,尽量避免重复创建,消耗资源
// 关于客户端和生产消费者的最佳实践,可以参考官方文档 https://cloud.tencent.com/document/product/1179/58090
PulsarClient client = PulsarClient.builder()
//替换成集群接入地址,位于【集群管理】页面接入地址
.serviceUrl("http://pulsar-..tencenttdmq.com:8080")
//替换成角色密钥,位于【角色管理】页面
.authentication(AuthenticationFactory.token("eyJr"))
.build();
System.out.println(">> pulsar client created.");
说明:
serviceUrl 即接入地址,可以在控制台 集群管理 页面查看并复制。

token 即角色的密钥,角色密钥可以在角色管理中复制。密钥泄露很可能导致您的数据泄露,请妥善保管您的密钥。
创建消费者进程
		
Consumer<byte[]> consumer = client.newConsumer()
//topic完整路径,格式为persistent://集群(租户)ID/命名空间/Topic名称,从【Topic管理】处复制
.topic("persistent://pulsar-****/namespace/topicName")
//需要在控制台Topic详情页创建好一个订阅,此处填写订阅名
.subscriptionName("subscriptionName")
//声明消费模式为exclusive(独占)模式
.subscriptionType(SubscriptionType.Exclusive)
//配置从最早开始消费,否则可能会消费不到历史消息
.subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
.subscribe();
System.out.println(">> pulsar consumer created.");
说明
Topic 名称需要填入完整路径,即“persistent://clusterid/namespace/Topic”,clusterid/namespace/topic 的部分可以从控制台上 Topic 管理 页面直接复制。

subscriptionName 需要写入订阅名,可在消费者界面查看。
创建生产者进程
		
Producer<byte[]> producer = client.newProducer()
//topic完整路径,格式为persistent://集群(租户)ID/命名空间/Topic名称
.topic("persistent://pulsar-****/namespace/topicName")
.create();
System.out.println(">> pulsar producer created.");
说明
Topic 名称需要填入完整路径,即“persistent://clusterid/namespace/Topic”,clusterid/namespace/topic 的部分可以从控制台上 Topic 管理 页面直接复制。
生产消息
		
for (int i = 0; i < 5; i++) {
String value = "my-sync-message-" + i;
//发送消息
MessageId msgId = producer.newMessage().value(value.getBytes()).send();
System.out.println("deliver msg " + msgId + ",value:" + value);
}
//关闭生产者
producer.close();
消费消息
		
for (int i = 0; i < 5; i++) {
//接收当前offset对应的一条消息
Message<byte[]> msg = consumer.receive();
MessageId msgId = msg.getMessageId();
String value = new String(msg.getValue());
System.out.println("receive msg " + msgId + ",value:" + value);
//接收到之后必须要ack,否则offset会一直停留在当前消息,无法继续消费
consumer.acknowledge(msg);
}
2. pom.xml 所在目录执行命令 mvn clean package,或者通过 IDE 自带的功能打包整个工程,在 target 目录下生成一个可运行的 jar 文件。

3. 运行成功后将 jar 文件上传到云服务器,具体操作参见 如何将本地文件拷贝到云服务器
4. 登录云服务器,进入到刚刚上传 jar 文件所在的目录,可看到文件已上传到云服务器。

5. 执行命令 tdmq-demo-cloud-1.0.0.jar,运行 Demo,可查看运行日志。

6. 登录 TDMQ Pulsar 版控制台,依次单击Topic 管理 > Topic 名称进入消费管理页面,点开订阅名下方右三角号,可查看生产消费记录。

7. 进入 消息查询 页面,可查看 Demo 运行后的消息轨迹。
说明:
消息轨迹的查询只支持单条消息,如果用户在 Producer 侧开启了 Batch 功能,则在消息查询中,同一个 Batch 的消息只可以查询到 Batch 中的第一条消息。

消息轨迹如下:

相似文档
  • 操作背景: 重试 Topic 是一种为了确保消息被正常消费而设计的 Topic 。当某些消息第一次被消费者消费后,没有得到正常的回应,则会进入重试 Topic 中,当重试达到一定次数后,停止重试,投递到死信 Topic 中。
  • 操作背景: 为了适用不同场景的需求,Pulsar 支持四种订阅模式:Exclusive、Shared、Failover、Key_Shared。 1. Exclusive 独占模式(默认模式):一个 Subscription 只能与一个 Consumer 关联,只有这个 Consumer 可以接收到 Topic 的全部消息,如果该 Consumer 出现故障了就会停止消费。
  • Apache Pulsar 架构: Apache Pulsar 是一个发布-订阅模型的消息系统,由 Broker、Apache BookKeeper、Producer、Consumer 等组件组成。
  • Pulsar 跨可用区部署: Pulsar 支持跨可用区部署,即在有 3 个或 3 个以上可用区的地域购买 Pulsar 集群时,可以最多选择 3 个可用区购买跨可用区实例。该实例分区副本会强制分布在各个可用区节点上,这种部署方式能够让您的实例在单个可用区不可用情况下仍能正常提供服务。
  • 消息 ID 生成规则: 在 Pulsar 中,每条消息都有自己的 ID(即 MessageID),MessageID 由四部分组成:ledgerId:entryID:partition-index:batch-index。其中: partition-index:指分区的编号,在非分区 topic 的时候为 -1。 batch-index:在非批量消息的时候为 -1。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部