閱讀765 返回首頁    go iPhone_iPad_Mac_手機_平板_蘋果apple


SDK快速入門__數據訂閱_用戶指南_數據傳輸-阿裏雲

這一節,您將學到如何用DTS Java SDK完成一些基本的操作。

初始化RegionContext

RegionContext 主要用於保存設置安全認證信息及訪問網絡模式設置。下麵代碼顯示如何初始化RegionContext,設置安全認證憑證及網絡訪問模式。

  1. import java.util.List;
  2. import com.aliyun.drc.clusterclient.RegionContext;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. public class MainClass
  6. {
  7. public static void main(String[] args) throws Exception {
  8. // 創建一個RegionContext
  9. RegionContext context = new RegionContext();
  10. // 配置阿裏雲賬號的AccessKey及AccessKeySecret
  11. context.setAccessKey("<AccessKey>");
  12. context.setSecret("<AccessKeySecret>");
  13. // 運行SDK的服務器是否使用公網IP連接DTS訂閱通道
  14. context.setUsePublicIp(true);
  15. // 下麵為其他調用代碼 ……
  16. …………
  17. }
  18. }

如果要使用SDK,必須先初始化RegionContext,配置連接訂閱通道的安全認證等信息。上麵的接口setAccessKey設置的是阿裏雲賬號的AccessKey
setSecret 設置的是阿裏雲賬號的AccessKeySecret
AccessKey及AccessKeySecret是由阿裏雲的係統直接分配給用戶的,稱為ID對,用戶標識用戶,可到阿裏雲用戶中心創建獲取。
setUsePublicIp 是告訴DTS,您本地SDK運行服務器是否用公網IP連接訂閱通道。如果設置為true,那麼訂閱數據流走公網,否則走內網。

初始化ClusterClient

SDK連接訂閱通道,接受增量數據等操作都是通過類ClusterClient來完成的,下麵代碼創建了一個ClusterClient

  1. import java.util.List;
  2. import com.aliyun.drc.clusterclient.ClusterClient;
  3. import com.aliyun.drc.clusterclient.DefaultClusterClient;
  4. import com.aliyun.drc.clusterclient.RegionContext;
  5. public class MainClass
  6. {
  7. public static void main(String[] args) throws Exception {
  8. // 創建一個RegionContext
  9. RegionContext context = new RegionContext();
  10. context.setAccessKey("<AccessKey>");
  11. context.setSecret("<AccessKeySecret>");
  12. context.setUsePublicIp(true);
  13. // 創建訂閱消費者
  14. final ClusterClient client = new DefaultClusterClient(context);
  15. // 下麵是一些其他調用代碼
  16. ……………
  17. }
  18. }

初始化Listener

消費數據的功能通過類Listener來實現。初始化完ClusterClient,需要添加listener,Listener要定義notify函數來接受訂閱數據並進行數據消費。下麵的代碼中實現了最簡單的消費邏輯,將訂閱到的數據打印到屏幕。

  1. import com.aliyun.drc.clusterclient.ClusterClient;
  2. import com.aliyun.drc.clusterclient.ClusterListener;
  3. import com.aliyun.drc.clusterclient.DefaultClusterClient;
  4. import com.aliyun.drc.clusterclient.RegionContext;
  5. import com.aliyun.drc.clusterclient.message.ClusterMessage;
  6. public class MainClass
  7. {
  8. public static void main(String[] args) throws Exception {
  9. // 初始化一個RegionContext對象
  10. ………
  11. //初始化一個ClusterClient對象
  12. ………
  13. ClusterListener listener = new ClusterListener(){
  14. @Override
  15. public void notify(List<ClusterMessage> messages) throws Exception {
  16. for (ClusterMessage message : messages) {
  17. //打印訂閱到的增量數據
  18. System.out.println(message.getRecord() + ":" + message.getRecord().getTablename() + ":"
  19. + message.getRecord().getOpt());
  20. //消費完數據後向DTS匯報ACK,必須調用
  21. message.ackAsConsumed();
  22. }
  23. }
  24. }
  25. }

DTS實現了SDK的數據消費時間點保存到DTS服務端的機製,簡化用戶使用SDK時,實現SDK容災的複雜度。
上麵示例代碼中的 askAsConsumed()接口就是將SDK消費的最新一條數據的位點及時間戳匯報給DTS服務端。匯報了時間戳信息,如果SDK意外宕機重啟後,會自動從DTS服務端獲取這個消費時間點,然後從這個時間點重啟,解決數據重複問題。

啟動ClusterClient

  1. import java.util.List;
  2. import com.aliyun.drc.clusterclient.ClusterClient;
  3. import com.aliyun.drc.clusterclient.ClusterListener;
  4. import com.aliyun.drc.clusterclient.DefaultClusterClient;
  5. import com.aliyun.drc.clusterclient.RegionContext;
  6. import com.aliyun.drc.clusterclient.message.ClusterMessage;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. public class MainClass
  10. {
  11. public static void main(String[] args) throws Exception {
  12. //初始化RegionContext
  13. …………
  14. //初始化ClusterClient
  15. …………
  16. //初始化ClusterListener
  17. …………
  18. // 添加監聽者
  19. client.addConcurrentListener(listener);
  20. // 設置請求的訂閱通道ID
  21. client.askForGUID("dts_rdsrjiei2u2afnb_DSF");
  22. // 啟動後台線程, 注意這裏不會阻塞, 主線程不能退出
  23. client.start();
  24. }

上麵代碼中接口askForGUID設置這個client需要請求的訂閱通道ID。這個訂閱通道ID從DTS控製台上獲取。一旦配置了訂閱通道ID,那麼這個SDK就能獲取這個訂閱通道中的增量數據。
在啟動client之前,需要將監聽者listener添加到client中,這樣當client從訂閱通道中拉取到增量數據時,會同步回調用listener的notify方法開始進行數據消費。

最後更新:2016-11-23 16:03:55

  上一篇:go SDK接口簡介__數據訂閱_用戶指南_數據傳輸-阿裏雲
  下一篇:go 訂閱數據SQL封裝簡介__數據訂閱_用戶指南_數據傳輸-阿裏雲