# 沪深 Level-2 行情 Java SDK 接入指南 来源:https://doc.annhoo.cn/hushensdk/mdforjava.html 摘要:安湖沪深 Level-2 Java SDK 使用说明,介绍 QuotesHandler 接口、指数与逐笔行情回调、Demo 集成和大数据系统接入。 本文档为AnnHoo-ExMD极速行情系统配套的java版本SDK,一般用于对接客户的大数据系统、内部转发系统以及部分java语言栈的策略。 提示 由于java生态比较丰富,客户需求也是多样化,很多新特性无法快速同步到文档,因此实际交付版本的features不会仅限于本文档。 实际开发过程中,有任何问题可联系我司客服人员,安排专业人员替您解答。 引入我们的jar包 实现对应的接口 二次集成 需要实现com.annhoo.md.interfaces.QuotesHandler接口 监听服务会向此实现类主动推入行情报文 定义如下 /** * 以下方法 会有单独线程写入 互不影响 * */ public interface QuotesHandler { void pushIndex(Index index); void pushEntrust(Entrust entrust); void pushTrade(Trade trade); void pushSnapshot(Snapshot snapshot); } 3 . 范例 将行情消息保存到对应的文件 /** 简单实现消息处理 **/ class SimpleQuotes implements QuotesHandler{ PrintStream indexFile; PrintStream entrustFile; PrintStream tradeFile; PrintStream snapshotFile; public SimpleQuotes(){ try { indexFile=new PrintStream("./index.json"); entrustFile=new PrintStream("./entrust.json"); tradeFile=new PrintStream("./trade.json"); snapshotFile=new PrintStream("./snapshot.json"); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } @Override public void pushIndex(Index index) { String str=JSONObject.toJSONString(index); log.info("{}",str); synchronized (indexFile){ indexFile.println(String.format("%s,", str)); } } @Override public void pushEntrust(Entrust entrust) { String str=JSONObject.toJSONString(entrust); log.info("{}",str); synchronized (entrustFile){ entrustFile.println(String.format("%s,", str)); } } @Override public void pushTrade(Trade trade) { String str=JSONObject.toJSONString(trade); log.info("{}",str); synchronized (tradeFile){ tradeFile.println(String.format("%s,", str)); } } @Override public void pushSnapshot(Snapshot snapshot) { String str=JSONObject.toJSONString(snapshot); log.info("{}",str); synchronized (snapshotFile){ snapshotFile.println(String.format("%s,", str)); } } } class Test{ public static void main(String args[]){ try{ String multicastIp="232.4.102.97"; //配置4个端口 会启动4个组播监听服务 /** com.annhoo.md.udpserver.UdpServer : /192.168.31.200:22348 join 2022-09-14 11:18:09.538 INFO 20528 --- [pool-1-thread-1] com.annhoo.md.udpserver.UdpServer : /192.168.31.200:22345 join 2022-09-14 11:18:09.538 INFO 20528 --- [pool-1-thread-3] com.annhoo.md.udpserver.UdpServer : /192.168.31.200:22347 join 2022-09-14 11:18:09.538 INFO 20528 --- [pool-1-thread-2] com.annhoo.md.udpserver.UdpServer : /192.168.31.200:22346 join */ List ports=Arrys.asList(new Integer[]{22345,22346,22347,22348}); String host="92.168.1.127"; //装配组播监听server //udp buffer 每个 30MB UdpServer udpServer=new UdpServer(config.getIp(), config.getPort(),30,config.getHost(),new SimpleQuotes()); udpServer.runServer(); System.out.println("服务启动成功"); }catch(Exception e){ e.printStackTrace(); System.out.println("服务启动失败"); } } } pom文件引入或者直接在项目中引入我们发布的jar包。 配置文件 application.properties #组播地址 multicast.ip=232.4.102.97 #组播端口 multicast.port=22345,22346,22347,22348 #预留配置 multicast.model=0 #加入组播的网卡地址 multicast.host=192.168.31.200 测试配置文件是否正常,可通过执行我们的jar包来验证,方法如下: shell java -jar md-0.0.1-SNAPSHOT.jar 看到以下日志 则启动成功 2022-09-14 11:18:08.930 INFO 20528 --- [ main] com.annhoo.md.MdApplication : Starting MdApplication using Java 1.8.0_321 on Sweet with PID 20528 (F:\project\md\target\classes started by Sweet in F:\project\md) 2022-09-14 11:18:08.930 INFO 20528 --- [ main] com.annhoo.md.MdApplication