Archived
0

emdn initial

This commit is contained in:
iMoHax
2014-08-27 17:45:42 +04:00
parent 9d58026568
commit 269869122c
4 changed files with 110 additions and 0 deletions

View File

@@ -26,6 +26,16 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
@@ -38,6 +48,20 @@
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>0.3.4</version>
</dependency>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jzmq</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<build>

View File

@@ -0,0 +1,63 @@
package ru.trader.emdn;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zeromq.ZMQ;
import org.zeromq.ZMQException;
import java.io.UnsupportedEncodingException;
import java.util.zip.DataFormatException;
import java.util.zip.Inflater;
public class EMDN {
private final static Logger LOG = LoggerFactory.getLogger(EMDN.class);
private final String subServer;
public EMDN(String subServer) {
this.subServer = subServer;
}
public void getData(){
ZMQ.Context context = ZMQ.context(1);
try (ZMQ.Socket socket = context.socket(ZMQ.SUB)) {
socket.setReceiveTimeOut(10000);
LOG.debug("Connect to server {}", subServer);
socket.connect(subServer);
LOG.trace("Subscribe");
socket.subscribe(new byte[0]);
for (int i = 0; i < 5; i++) {
try {
byte[] receivedData = socket.recv(0);
LOG.trace("Recived data: {}", receivedData);
if (receivedData == null) continue;
String market_json = new String(decompress(receivedData), "UTF-8");
LOG.trace("JSON: {}", market_json);
} catch (ZMQException | UnsupportedEncodingException ex) {
LOG.error("Error on get data from EMDN", ex);
}
}
}
context.term();
}
private byte[] decompress(byte[] input){
byte[] decompressed = new byte[input.length * 16];
int decompressedLength = 0;
Inflater inflater = new Inflater();
try {
inflater.setInput(input);
decompressedLength = inflater.inflate(decompressed);
} catch (DataFormatException e) {
LOG.error("Error on decompress raw data {}", input);
LOG.error("",e);
} finally {
inflater.end();
}
byte[] res = new byte[decompressedLength];
System.arraycopy(decompressed, 0, res, 0, decompressedLength);
return res;
}
}

View File

@@ -0,0 +1,14 @@
package ru.trader.emdn;
import org.junit.Assert;
import org.junit.Test;
public class EMDNTest extends Assert {
private final static EMDN markettool = new EMDN("tcp://firehose.elite-market-data.net:9050");
@Test
public void testGetData() throws Exception {
markettool.getData();
}
}

View File

@@ -0,0 +1,9 @@
log4j.rootLogger = INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p: %d{dd.MM.yyyy HH:mm:ss} (%F:%L) - %m%n
log4j.logger.ru.trader.emdn.EMDN = TRACE
log4j.logger.org.zeromq = TRACE