zoukankan      html  css  js  c++  java
  • 阿里云数据变化订阅

    很简单,看例子

    import java.util.List;
    import com.aliyun.drc.client.message.DataMessage;
    import com.aliyun.drc.clusterclient.ClusterClient;
    import com.aliyun.drc.clusterclient.ClusterListener;
    import com.aliyun.drc.clusterclient.DefaultClusterClient;
    import com.aliyun.drc.clusterclient.RegionContext;
    import com.aliyun.drc.clusterclient.message.ClusterMessage;
    
    /**
     * 其中AccessKey、Secret可在阿里云用户界面中免费获取 GUID需要开通订阅服务才能获取对应的数据变更监听服务
     * 
     */
    public class TestDTS {
        public static void main(String[] args) throws Exception {
            RegionContext context = new RegionContext();
            context.setUsePublicIp(true);
            context.setAccessKey("***key");
            context.setSecret("***secret");
            ClusterClient client = new DefaultClusterClient(context);
            ClusterListener listener = new ClusterListener() {
                public void notify(List<ClusterMessage> list) throws Exception {
                    for (ClusterMessage m : list) {
                        if (m.getRecord().getOpt().compareTo(DataMessage.Record.Type.INSERT) == 0
                                || m.getRecord().getOpt().compareTo(DataMessage.Record.Type.REPLACE) == 0
                                || m.getRecord().getOpt().compareTo(DataMessage.Record.Type.UPDATE) == 0) {
                            try {
                                System.out.println("xxx");
                            } catch (Exception e) {
                            }
                        }
                    }
                }
                public void noException(Exception e) {
                }
            };
    
            client.addConcurrentListener(listener);
            client.askForGUID("***guid");
            client.start();
        }
    }

    可以用一个阻塞队列做生产者消费者模型,加上缓存等策略,达到接收订阅变化,准实时反映到后续搜索引擎、消息队列或其他需求方中

    public static LinkedBlockingQueue<String> operationQueue = new LinkedBlockingQueue<String>();
        static class Worker implements Runnable {
            @Override
            public void run()  {
                try {
                    while(true) {
                       String oper = operationQueue.take();
                       // do something comsume
                    }
                } catch (Exception ex) {
                }
            }
        }
  • 相关阅读:
    python自动化测试应用-番外篇--接口测试2
    python自动化测试应用-番外篇--接口测试1
    篇3 安卓app自动化测试-搞定界面元素
    selenium操作拖拽实现无效果的替代方案
    python自动化测试应用-第7篇(WEB测试)--Selenium进阶篇
    python自动化测试应用-第6篇(WEB测试)--Selenium元素篇
    篇4 安卓app自动化测试-Appium API进阶
    进程和应用程序生命周期
    任务和返回栈
    activity状态变化
  • 原文地址:https://www.cnblogs.com/it-worker365/p/9934695.html
Copyright © 2011-2022 走看看