diff --git a/examples/Java/SimpleSubscribe/pom.xml b/examples/Java/SimpleSubscribe/pom.xml new file mode 100644 index 0000000..90db6ef --- /dev/null +++ b/examples/Java/SimpleSubscribe/pom.xml @@ -0,0 +1,72 @@ + + + + 4.0.0 + + com.example + SimpleJavaEDDNSubscribe + 1.0-SNAPSHOT + + SimpleJavaEDDNSubscribe + + + UTF-8 + 1.11 + 1.11 + + + + + org.zeromq + jeromq + 0.5.2 + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/examples/Java/SimpleSubscribe/src/main/java/org/eddn/examples/SimpleJavaEDDNSubscribe.java b/examples/Java/SimpleSubscribe/src/main/java/org/eddn/examples/SimpleJavaEDDNSubscribe.java new file mode 100644 index 0000000..a5c8086 --- /dev/null +++ b/examples/Java/SimpleSubscribe/src/main/java/org/eddn/examples/SimpleJavaEDDNSubscribe.java @@ -0,0 +1,53 @@ +package org.eddn.examples; + +import java.util.zip.Inflater; + +import org.zeromq.SocketType; +import org.zeromq.ZMQ; +import org.zeromq.ZContext; + +public class SimpleJavaEDDNSubscribe { + private static final int MAX_MESSAGE_SIZE_KB = 200; + private static final String EDDN_SERVER = "tcp://eddn.edcd.io:9500"; + private static ZContext context; + + public static void main(String[] args) throws Exception { + context = new ZContext(); + String jsonMessage = getOneMessage(); + System.out.println(jsonMessage); + context.close(); + } + + private static String getOneMessage() throws Exception { + byte[] deflatedMessage = receiveOneDeflatedMessage(); + return inflateMessage(deflatedMessage); + } + + private static byte[] receiveOneDeflatedMessage() { + ZMQ.Socket socket = getEDDNSubscriptionSocket(); + byte[] deflatedMessage = socket.recv(); + return deflatedMessage; + } + + private static ZMQ.Socket getEDDNSubscriptionSocket() { + ZMQ.Socket socket = context.createSocket(SocketType.SUB); + socket.connect(EDDN_SERVER); + + // need to subscribe to the empty topic to receive anything + socket.subscribe(""); + return socket; + } + + public static String inflateMessage(byte[] bytes) throws Exception { + + Inflater decompresser = new Inflater(); + decompresser.setInput(bytes); + byte[] result = new byte[MAX_MESSAGE_SIZE_KB * 1024]; + int resultLength = decompresser.inflate(result); + decompresser.end(); + + // Decode the bytes into a String + String outputString = new String(result, 0, resultLength, "UTF-8"); + return outputString; + } +} \ No newline at end of file