use of org.nustaq.kontraktor.remoting.http.undertow.WebSocketPublisher in project kontraktor by RuedigerMoeller.
the class HelloActor method main.
public static void main(String[] a) {
HelloActor myService = AsActor(HelloActor.class);
// as websocket service fast serialialized
new WebSocketPublisher().facade(myService).hostName("localhost").urlPath("/hello").port(8080).serType(SerializerType.FSTSer).publish();
// as http long poll service, json encoding
new HttpPublisher().facade(myService).hostName("localhost").urlPath("/hellohttp").port(8080).serType(SerializerType.JsonNoRefPretty).publish();
// as tcp nio service, fast serialized
new TCPNIOPublisher().facade(myService).port(6789).serType(SerializerType.FSTSer).publish().await();
}
use of org.nustaq.kontraktor.remoting.http.undertow.WebSocketPublisher in project kontraktor by RuedigerMoeller.
the class Service4Node method main.
public static void main(String[] args) {
// ensure we see also IO/close exceptions
Log.setLevel(Log.DEBUG);
Service4Node service = Actors.AsActor(Service4Node.class);
new WebSocketPublisher(service, "localhost", "/s4n", 8080).coding(new Coding(SerializerType.JsonNoRef, Pojo2Node.class)).sendStringMessages(true).publish(actor -> {
System.exit(0);
});
}
use of org.nustaq.kontraktor.remoting.http.undertow.WebSocketPublisher in project kontraktor by RuedigerMoeller.
the class WSKrouterStarter method main.
public static void main(String[] args) {
WSKrouterStarterConfig read = WSKrouterStarterConfig.read();
Arrays.stream(read.getServices()).forEach(routedServiceEntry -> {
Log.Info(WSKrouterStarter.class, "start " + routedServiceEntry.strategy + ":" + routedServiceEntry.encoding + "@" + routedServiceEntry.getPath());
Routing.start(routedServiceEntry.getStrategy().getClazz(), new WebSocketPublisher().hostName(read.getHost()).port(read.getPort()).urlPath(routedServiceEntry.getPath()).serType(routedServiceEntry.getEncoding()));
});
}
use of org.nustaq.kontraktor.remoting.http.undertow.WebSocketPublisher in project kontraktor by RuedigerMoeller.
the class AkkaInterop method serveAkka_RemoteToKontraktor.
@Test
public void serveAkka_RemoteToKontraktor() throws InterruptedException {
final int NUM_MSG = 50_000_000;
final ActorSystem system = ActorSystem.create("reactive-interop");
final Materializer mat = ActorMaterializer.create(system);
KxReactiveStreams kxStreams = KxReactiveStreams.get();
RateMeasure rm = new RateMeasure("rate");
CountDownLatch count = new CountDownLatch(NUM_MSG);
Iterable it = () -> IntStream.range(0, NUM_MSG).mapToObj(x -> x).iterator();
Publisher<Integer> pub = (Publisher<Integer>) Source.from(it).runWith(Sink.publisher(), mat);
kxStreams.asKxPublisher(pub).serve(new WebSocketPublisher().hostName("localhost").port(6790).urlPath("akka"));
// subscribe with kontraktor client
new KxReactiveStreams(true).connect(Integer.class, new WebSocketConnectable().url("ws://localhost:6790/akka")).subscribe((res, err) -> {
if (Actors.isResult(err)) {
rm.count();
count.countDown();
}
});
int secondsWait = 50;
while (count.getCount() > 0 && secondsWait-- > 0) {
System.out.println("count:" + count.getCount());
Thread.sleep(1000);
}
system.shutdown();
Assert.assertTrue(count.getCount() == 0);
// give time closing stuff
Thread.sleep(1000);
}
use of org.nustaq.kontraktor.remoting.http.undertow.WebSocketPublisher in project kontraktor by RuedigerMoeller.
the class AkkaInterop method same_as_serveAkkaKontraktorAsBridge_use_RxJavaAtReceiverSide.
@Test
public void same_as_serveAkkaKontraktorAsBridge_use_RxJavaAtReceiverSide() throws InterruptedException {
Log.setLevel(Log.DEBUG);
final int NUM_MSG = 20_000_000;
final ActorSystem system = ActorSystem.create("reactive-interop");
// Attention: buffer + batchsizes of Akka need increase in order to get performance
final ActorMaterializer mat = ActorMaterializer.create(ActorMaterializerSettings.create(system).withInputBuffer(8192, 8192), system);
KxReactiveStreams kxStreams = KxReactiveStreams.get();
RateMeasure rm = new RateMeasure("rate");
CountDownLatch count = new CountDownLatch(NUM_MSG);
Iterable it = () -> IntStream.range(0, NUM_MSG).mapToObj(x -> x).iterator();
Publisher<Integer> pub = (Publisher<Integer>) Source.from(it).runWith(Sink.publisher(), mat);
kxStreams.asKxPublisher(pub).serve(new WebSocketPublisher().hostName("localhost").port(6789).urlPath("akka"));
AtomicInteger kontraktorCount = new AtomicInteger(0);
// subscribe with akka client
KxPublisher<Integer> remotedPublisher = new KxReactiveStreams(true).connect(Integer.class, new WebSocketConnectable().url("ws://localhost:6789/akka")).map(x -> {
// (*)
kontraktorCount.incrementAndGet();
return x;
});
RxReactiveStreams.toObservable(remotedPublisher).forEach(i -> {
rm.count();
count.countDown();
});
int secondsWait = 50;
while (count.getCount() > 0 && secondsWait-- > 0) {
System.out.println("count:" + (NUM_MSG - count.getCount()) + " kontraktor count:" + kontraktorCount.get());
Thread.sleep(1000);
}
system.shutdown();
Assert.assertTrue(count.getCount() == 0);
// give time closing stuff
Thread.sleep(1000);
}
Aggregations