Example usage for io.vertx.core.eventbus MessageConsumer handler

List of usage examples for io.vertx.core.eventbus MessageConsumer handler

Introduction

In this page you can find the example usage for io.vertx.core.eventbus MessageConsumer handler.

Prototype

@Override
    MessageConsumer<T> handler(Handler<Message<T>> handler);

Source Link

Usage

From source file:co.runrightfast.vertx.core.RunRightFastVerticle.java

License:Apache License

/**
 *
 * @param <REQ>/*  w  w w  .jav a  2 s.  com*/
 * @param <RESP>
 * @param config
 * @return MessageConsumer
 */
protected <REQ extends Message, RESP extends Message> MessageConsumerRegistration<REQ, RESP> registerMessageConsumer(
        @NonNull final MessageConsumerConfig<REQ, RESP> config) {
    Preconditions.checkState(
            !messageConsumerRegistrations.containsKey(config.getAddressMessageMapping().getAddress()));
    final EventBus eventBus = vertx.eventBus();
    registerMessageCodecs(config);

    final String address = config.getAddressMessageMapping().getAddress();
    final MessageConsumer<REQ> consumer = config.isLocal() ? eventBus.localConsumer(address)
            : eventBus.consumer(address);
    consumer.completionHandler(config.getCompletionHandler()
            .map(handler -> messageConsumerCompletionHandler(address, Optional.of(handler), config))
            .orElseGet(() -> messageConsumerCompletionHandler(address, Optional.empty(), config)));
    consumer.endHandler(config.getEndHandler()
            .map(handler -> messageConsumerEndHandler(address, Optional.of(handler), config))
            .orElseGet(() -> messageConsumerEndHandler(address, Optional.empty(), config)));
    config.getExceptionHandler().ifPresent(consumer::exceptionHandler);
    consumer.handler(messageConsumerHandler(config));

    final String processSpecificAddress = config.getAddressMessageMapping().getProcessSpecificAddress();
    final MessageConsumer<REQ> processSpecificConsumer = config.isLocal()
            ? eventBus.localConsumer(processSpecificAddress)
            : eventBus.consumer(processSpecificAddress);
    processSpecificConsumer.completionHandler(config.getCompletionHandler().map(
            handler -> messageConsumerCompletionHandler(processSpecificAddress, Optional.of(handler), config))
            .orElseGet(
                    () -> messageConsumerCompletionHandler(processSpecificAddress, Optional.empty(), config)));
    processSpecificConsumer.endHandler(config.getEndHandler()
            .map(handler -> messageConsumerEndHandler(processSpecificAddress, Optional.of(handler), config))
            .orElseGet(() -> messageConsumerEndHandler(processSpecificAddress, Optional.empty(), config)));
    config.getExceptionHandler().ifPresent(processSpecificConsumer::exceptionHandler);
    processSpecificConsumer.handler(messageConsumerHandler(config));

    final MessageConsumerRegistration<REQ, RESP> messageConsumerRegistration = MessageConsumerRegistration
            .<REQ, RESP>builder().messageConsumer(consumer)
            .processSpecificMessageConsumer(processSpecificConsumer).config(config).build();
    messageConsumerRegistrations = ImmutableMap.<String, MessageConsumerRegistration<?, ?>>builder()
            .putAll(messageConsumerRegistrations).put(config.address(), messageConsumerRegistration).build();
    return messageConsumerRegistration;
}

From source file:de.qreator.matheserver.Start.java

public static void main(String[] s) {
    int port = 8080;
    if (s.length == 1) {
        port = Integer.parseInt(s[0]); // port festlegen: 

    }//from   w  w  w . jav  a 2  s .c  o  m

    Vertx vertx = Vertx.vertx();

    io.vertx.core.http.HttpServer server = vertx.createHttpServer();

    Router router = Router.router(vertx);
    SockJSHandler sockJSHandler = SockJSHandler.create(vertx);
    PermittedOptions[] inboundPermitted = new PermittedOptions[3];
    inboundPermitted[0] = new PermittedOptions().setAddress("matheserver");
    inboundPermitted[1] = new PermittedOptions().setAddress("matheserver.spielfeld");
    inboundPermitted[2] = new PermittedOptions().setAddressRegex("matheserver.spieler\\..+");

    BridgeOptions options = new BridgeOptions();
    for (int i = 0; i < 3; i++) {
        options.addInboundPermitted(inboundPermitted[i]);
        options.addOutboundPermitted(inboundPermitted[i]);
    }

    sockJSHandler.bridge(options);

    router.route("/bridge/*").handler(sockJSHandler);
    router.route("/*").handler(StaticHandler.create()); // webroot unter src/main/resources/webroot
    server.requestHandler(router::accept).listen(port);

    EventBus eb = vertx.eventBus();

    MessageConsumer<JsonObject> consumer = eb.consumer("matheserver");
    consumer.handler(message -> {
        String typ = (message.body()).getString("typ");
        if (typ.equals("einaus")) {
            try {
                Runtime.getRuntime().exec("sudo init 6");
                System.out.println("System wird neu gestartet ...");
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    });

    try {
        System.out.println("Spieler bitte mit Browser anmelden unter \nhttp://"
                + InetAddress.getLocalHost().getHostAddress() + ":" + port + "/spieler.html");

    } catch (Exception e) {
        e.printStackTrace();

    }
}

From source file:examples.EventBusExamples.java

License:Open Source License

public void example2(Vertx vertx) {
    EventBus eb = vertx.eventBus();// w  w  w  . j  a v  a2 s  . c  o  m

    MessageConsumer<String> consumer = eb.consumer("news.uk.sport");
    consumer.handler(message -> {
        System.out.println("I have received a message: " + message.body());
    });
}

From source file:examples.EventBusExamples.java

License:Open Source License

public void example8(EventBus eventBus) {
    MessageConsumer<String> consumer = eventBus.consumer("news.uk.sport");
    consumer.handler(message -> {
        System.out.println("I have received a message: " + message.body());
        message.reply("how interesting!");
    });//from   w  w  w. j a  va 2  s  .c o m
}

From source file:examples.MessageSourceExamples.java

License:Open Source License

public void example2(ServiceDiscovery discovery) {
    // Get the record
    discovery.getRecord(new JsonObject().put("name", "some-message-source-service"), ar -> {
        if (ar.succeeded() && ar.result() != null) {
            // Retrieve the service reference
            ServiceReference reference = discovery.getReference(ar.result());
            // Retrieve the service object
            MessageConsumer<JsonObject> consumer = reference.get();

            // Attach a message handler on it
            consumer.handler(message -> {
                // message handler
                JsonObject payload = message.body();
            });/*from   w  ww  .java 2s. c o m*/

            // ...
            // when done
            reference.release();
        }
    });
}

From source file:examples.MessageSourceExamples.java

License:Open Source License

public void example3(ServiceDiscovery discovery) {
    MessageSource.<JsonObject>getConsumer(discovery,
            new JsonObject().put("name", "some-message-source-service"), ar -> {
                if (ar.succeeded()) {
                    MessageConsumer<JsonObject> consumer = ar.result();

                    // Attach a message handler on it
                    consumer.handler(message -> {
                        // message handler
                        JsonObject payload = message.body();
                    });//  w ww .j  a v a 2  s . co  m
                    // ...

                    // Dont' forget to release the service
                    ServiceDiscovery.releaseServiceObject(discovery, consumer);

                }
            });
}

From source file:examples.VertxAmqpBridgeExamples.java

License:Apache License

public void example2(Vertx vertx) {
    AmqpBridge bridge = AmqpBridge.create(vertx);
    // Start the bridge, then use the event loop thread to process things thereafter.
    bridge.start("localhost", 5672, res -> {
        // Set up a consumer using the bridge, register a handler for it.
        MessageConsumer<JsonObject> consumer = bridge.createConsumer("myAmqpAddress");
        consumer.handler(vertxMsg -> {
            JsonObject amqpMsgPayload = vertxMsg.body();
            Object amqpBody = amqpMsgPayload.getValue("body");

            System.out.println("Received a message with body: " + amqpBody);
        });/*from   w  w w  .  jav  a2s.c  o m*/
    });
}

From source file:examples.VertxAmqpBridgeExamples.java

License:Apache License

public void example7(MessageConsumer<JsonObject> consumer) {
    consumer.setMaxBufferedMessages(5);//from  w  ww . ja v  a2s.  co m
    consumer.handler(msg -> {
        // ...handle received messages...
    });
}

From source file:examples.VertxAmqpBridgeExamples.java

License:Apache License

public void example11(MessageConsumer<JsonObject> consumer) {
    consumer.handler(msg -> {
        // ...do something with received message...then reply...
        String replyAddress = msg.replyAddress();
        if (replyAddress != null) {
            JsonObject amqpReplyMessagePayload = new JsonObject();
            amqpReplyMessagePayload.put("body", "myResponse");

            msg.reply(amqpReplyMessagePayload);
        }//from  w w w .  ja va2s.c  om
    });
}

From source file:io.nonobot.core.client.impl.BotClientImpl.java

License:Apache License

@Override
public void receiveMessage(ReceiveOptions options, String message, Handler<AsyncResult<String>> replyHandler) {
    String replyAddress = UUID.randomUUID().toString();
    Future<String> reply = Future.future();
    reply.setHandler(replyHandler);//from  www. j  a va 2s  . c  om
    MessageConsumer<String> consumer = vertx.eventBus().consumer(replyAddress);
    consumer.handler(msg -> {
        String content = msg.body();
        if (content != null && !reply.isComplete()) {
            if (msg.replyAddress() != null) {
                msg.reply(null);
            }
            reply.complete(content);
            consumer.unregister();
        } else {
            if (msg.replyAddress() != null) {
                msg.fail(0, "Already replied");
            }
        }
    });
    consumer.completionHandler(ar -> {
        if (ar.succeeded()) {
            Matcher botMatcher = botPattern.matcher(message);
            JsonObject msg = new JsonObject().put("replyAddress", replyAddress);
            msg.put("chatId", options.getChatId());
            if (botMatcher.find()) {
                msg.put("respond", true);
                msg.put("content", botMatcher.group(1));
            } else {
                msg.put("respond", false);
                msg.put("content", message);
            }
            vertx.eventBus().publish(inboundAddress, msg);
            vertx.setTimer(options.getTimeout(), timerID -> {
                if (!reply.isComplete()) {
                    consumer.unregister();
                    reply.fail(new Exception("timeout"));
                }
            });
        } else {
            replyHandler.handle(Future.failedFuture(ar.cause()));
        }
    });
}