javads/aeron/publisher/Publisher.java
2026-01-15 12:21:18 -05:00

49 lines
1.3 KiB
Java

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);
}
}
}