import io.aeron.Aeron; import io.aeron.Publication; import io.aeron.driver.MediaDriver; import org.agrona.concurrent.UnsafeBuffer; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; public class Publisher { public static void main(String[] args) throws Exception { MediaDriver driver = MediaDriver.launchEmbedded(); Aeron.Context ctx = new Aeron.Context() .aeronDirectoryName(driver.aeronDirectoryName()); Aeron aeron = Aeron.connect(ctx); String channel = "aeron:udp?endpoint=subscriber:40123"; int streamId = 1001; Publication publication = aeron.addPublication(channel, streamId); UnsafeBuffer buffer = new UnsafeBuffer(ByteBuffer.allocateDirect(256)); long counter = 0; System.out.println("Publisher ready"); while (true) { long timestamp = System.currentTimeMillis(); String msg = counter + "," + timestamp; buffer.setMemory(0, buffer.capacity(), (byte) 0); byte[] bytes = msg.getBytes(StandardCharsets.UTF_8); buffer.putBytes(0, bytes); long result; do { result = publication.offer(buffer, 0, bytes.length); if (result < 0) Thread.yield(); } while (result < 0); System.out.println("Sent: " + msg); counter++; Thread.sleep(1000); } } }