简介
本文档为AnnHoo-ExMD极速行情系统配套的java版本SDK,一般用于对接客户的大数据系统、内部转发系统以及部分java语言栈的策略。
Tips
由于java生态比较丰富,客户需求也是多样化,很多新特性无法快速同步到文档,因此实际交付版本的features不会仅限于本文档。
实际开发过程中,有任何问题可联系我司客服人员,安排专业人员替您解答。
demo说明
引入我们的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<Integer> 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("服务启动失败");
}
}
}
使用sdk 默认样例测试
1 .项目引入sdk
pom文件引入或者直接在项目中引入我们发布的jar包。
2 .添加项目配置
- 配置文件 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