Example usage for io.vertx.core.eventbus EventBus localConsumer

List of usage examples for io.vertx.core.eventbus EventBus localConsumer

Introduction

In this page you can find the example usage for io.vertx.core.eventbus EventBus localConsumer.

Prototype

<T> MessageConsumer<T> localConsumer(String address);

Source Link

Document

Like #consumer(String) but the address won't be propagated across the cluster.

Usage

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

License:Apache License

/**
 *
 * @param <REQ>/*ww w . jav a2  s .  co m*/
 * @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:io.helixservice.feature.metrics.MetricsFeature.java

License:Open Source License

private void addEventBusConsumers(Vertx vertx) {
    EventBus eventBus = vertx.eventBus();

    eventBus.localConsumer("metrics.histogram").handler(histogram -> {
        String[] bodySplit = splitRequest(histogram);
        metricRegistry.histogram(bodySplit[0]).update(Long.valueOf(bodySplit[1]));
    });//  w w w .j a v a2 s.c  o  m

    eventBus.localConsumer("metrics.timer").handler(timer -> {
        String[] bodySplit = splitRequest(timer);
        metricRegistry.timer(bodySplit[0]).update(Long.valueOf(bodySplit[1]), TimeUnit.MILLISECONDS);
    });

    eventBus.localConsumer("metrics.counter").handler(timer -> {
        String[] bodySplit = splitRequest(timer);
        metricRegistry.counter(bodySplit[0]).inc(Long.valueOf(bodySplit[1]));
    });
}