Xiaomi Galaxy Talos Book

Step-By-Step 使用SDK


这个章节是针对Demo程序做一些更详细的说明,请用户对照Demo的示例程序阅读下面的说明

Prerequisite

  1. 小米开放平台申请开发者帐号,并创建云服务密钥,得到一组App的AppKeyAppSecret

  2. 在项目的pom中加入Talos SDK的依赖,坐标如下:

       <groupId>com.xiaomi.infra.galaxy</groupId>
       <artifactId>galaxy-talos-sdk</artifactId>
       <version>2.1.6</version>
    

使用TalosProducer

  1. 配置server地址:使用配置文件构造TalosProducerConfig,并配置Talos的service uri,我们提供http和https,具体URI见[集群信息];很多配置是可Configurable的,用户可以根据后续的说明针对自己业务数据的情况进行配置。

  2. 构造Credential:使用开放平台提供的AppKey和AppSecret构造合法的Credential,只有合法的Credential才能被Authentication success

  3. 获取TopicTalosResourceName:创建/获取要写入数据的Topic,前面提到,数据的读写都需要TopicTalosResourceName这个唯一标识,对应于Demo中的createOrGetTopic()函数,使用TalosAdmin的describeTopic接口,目的是获得TopicTalosResourceName。

  4. 实现UserMessageCallback接口:实现这个接口,处理消息成功发送与失败,请注意,一般来讲producer声明为static,在回调的onError函数中使用它retry发送失败的消息

  5. 发送数据:实例化TalosProducer,调用发送消息接口 addUserMessage(List messageList)

使用TalosConsumer

  1. 同Producer 1/2/3 step:与TalosProducer一样,先配置server地址,构造合法的Credential,并获取TopicTalosResourceName;这里要注意的是,consumer只使用describeTopic接口获取Topic信息,而producer中会捕获异常,考虑到Topic不存在,producer会去创建这个Topic;对于consumer,如果Topic不存在,就不需要创建了,无法消费数据直接退出;

  2. 实现MessageProcessor和MessageProcessorFactory接口:实现这个接口,处理从server读取的数据

  3. 读取数据:实例化TalosConsumer就可以了,它会自动读取数据,并处理rebalance和记录offset等事情

使用TalosAdmin

  1. 同Producer 1/2/3 step:配置server地址,构造Credential;

  2. 操作Topic:createTopic/describeTopic 接口使用的是topicName,其他的接口像changeTopicAttribute/deleteTopic/addPartitionNumber等都使用topicTalosResourceName

Demo中的Credential/Grantee配置

  1. TalosAdmin:用户在Demo代码中可以看到,TalosAdmin中使用的是AccountKey和AccountSecret,认证的身份是Developer,使用Developer身份创建Topic,并授权给某个APP_ROOT身份;

  2. Producer/Consumer:而在Producer与Consumer中,读写Message使用的是APP_ROOT身份,配置的是AppKey和AppSecret;

这样做的好处是某个Topic对应着自己的AppRoot身份,防止使用Developer身份写窜了,因为Developer身份具有名下所有Topic的管理员权限,故Message的读写不建议使用Developer身份