Search in sources :

Example 11 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class RSocketNettyColocatedEventLoopGroupTest method setUp.

@BeforeEach
public void setUp() {
    this.gateway = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(RSocketServiceTransport::new).startAwait();
    final Address gatewayAddress = this.gateway.discovery().address();
    Microservices facade = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(gatewayAddress))).transport(RSocketServiceTransport::new).services(new Facade()).startAwait();
    final Address facadeAddress = facade.discovery().address();
    this.ping = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(facadeAddress))).transport(RSocketServiceTransport::new).services((PingService) () -> Mono.just(Thread.currentThread().getName())).startAwait();
    this.pong = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(facadeAddress))).transport(RSocketServiceTransport::new).services((PongService) () -> Mono.just(Thread.currentThread().getName())).startAwait();
}
Also used : ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) BeforeEach(org.junit.jupiter.api.BeforeEach) StepVerifier(reactor.test.StepVerifier) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Mono(reactor.core.publisher.Mono) Inject(io.scalecube.services.annotations.Inject) ServiceMethod(io.scalecube.services.annotations.ServiceMethod) Service(io.scalecube.services.annotations.Service) Test(org.junit.jupiter.api.Test) AfterEach(org.junit.jupiter.api.AfterEach) Microservices(io.scalecube.services.Microservices) ServiceCall(io.scalecube.services.ServiceCall) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) Optional(java.util.Optional) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Address(io.scalecube.net.Address) BaseTest(io.scalecube.services.BaseTest) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Address(io.scalecube.net.Address) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) Microservices(io.scalecube.services.Microservices) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 12 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class Example2 method main.

/**
 * Main method.
 *
 * @param args - program arguments
 */
public static void main(String[] args) {
    Microservices gateway = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(RSocketServiceTransport::new).startAwait();
    final Address gatewayAddress = gateway.discovery().address();
    Microservices service2Node = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(gatewayAddress))).transport(RSocketServiceTransport::new).services(new Service2Impl()).startAwait();
    Microservices service1Node = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(gatewayAddress))).transport(RSocketServiceTransport::new).services(new Service1Impl()).startAwait();
    gateway.call().api(Service1.class).remoteCallThenManyDelay(100).publishOn(Schedulers.parallel()).take(10).log("receive     |").collectList().log("complete    |").block();
    Mono.whenDelayError(gateway.shutdown(), service1Node.shutdown(), service2Node.shutdown()).block();
}
Also used : RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Microservices(io.scalecube.services.Microservices) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) Schedulers(reactor.core.scheduler.Schedulers) Mono(reactor.core.publisher.Mono) Address(io.scalecube.net.Address) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Address(io.scalecube.net.Address) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) Microservices(io.scalecube.services.Microservices)

Example 13 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class Example1 method main.

/**
 * Start the example.
 *
 * @param args ignored
 */
public static void main(String[] args) {
    // ScaleCube Node with no members
    Microservices seed = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(RSocketServiceTransport::new).startAwait();
    final Address seedAddress = seed.discovery().address();
    // Construct a ScaleCube node which joins the cluster hosting the Greeting Service
    Microservices ms = Microservices.builder().discovery("ms", endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(seedAddress))).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl()).startAwait();
    // Create service proxy
    GreetingsService service = seed.call().api(GreetingsService.class);
    // Execute the services and subscribe to service events
    service.sayHello("joe").subscribe(consumer -> System.out.println(consumer.message()));
    Mono.whenDelayError(seed.shutdown(), ms.shutdown()).block();
}
Also used : RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) GreetingServiceImpl(io.scalecube.services.examples.helloworld.service.GreetingServiceImpl) Microservices(io.scalecube.services.Microservices) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) Mono(reactor.core.publisher.Mono) GreetingsService(io.scalecube.services.examples.helloworld.service.api.GreetingsService) Address(io.scalecube.net.Address) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Address(io.scalecube.net.Address) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) GreetingsService(io.scalecube.services.examples.helloworld.service.api.GreetingsService) GreetingServiceImpl(io.scalecube.services.examples.helloworld.service.GreetingServiceImpl) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) Microservices(io.scalecube.services.Microservices)

Example 14 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class Example1 method main.

/**
 * Main method.
 *
 * @param args - program arguments
 */
public static void main(String[] args) {
    Microservices gateway = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(RSocketServiceTransport::new).startAwait();
    final Address gatewayAddress = gateway.discovery().address();
    Microservices service2Node = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(gatewayAddress))).transport(RSocketServiceTransport::new).services(new Service2Impl()).startAwait();
    Microservices service1Node = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(gatewayAddress))).transport(RSocketServiceTransport::new).services(new Service1Impl()).startAwait();
    gateway.call().api(Service1.class).manyDelay(100).publishOn(Schedulers.parallel()).take(10).log("receive     |").collectList().log("complete    |").block();
    Mono.whenDelayError(gateway.shutdown(), service1Node.shutdown(), service2Node.shutdown()).block();
}
Also used : RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Microservices(io.scalecube.services.Microservices) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) Schedulers(reactor.core.scheduler.Schedulers) Mono(reactor.core.publisher.Mono) Address(io.scalecube.net.Address) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Address(io.scalecube.net.Address) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) Microservices(io.scalecube.services.Microservices)

Example 15 with Address

use of io.scalecube.net.Address in project scalecube by scalecube.

the class Example1 method main.

/**
 * Start the example.
 *
 * @param args ignored
 */
public static void main(String[] args) {
    // ScaleCube Node with no members
    Microservices seed = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(RSocketServiceTransport::new).defaultContentType(// set explicit default data format
    PROTOSTUFF).startAwait();
    final Address seedAddress = seed.discovery().address();
    // Construct a ScaleCube node which joins the cluster hosting the Greeting Service
    Microservices ms = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(seedAddress))).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl()).startAwait();
    seed.call().api(GreetingsService.class).sayHello("joe (on default dataFormat PROTOSTUFF)").subscribe(consumer -> System.out.println(consumer.message()));
    seed.call().contentType(JSON).api(GreetingsService.class).sayHello("alice (on JSON dataFormat)").subscribe(consumer -> System.out.println(consumer.message()));
    seed.call().contentType(OCTET_STREAM).api(GreetingsService.class).sayHello("bob (on java native Serializable/Externalizable dataFormat)").subscribe(consumer -> System.out.println(consumer.message()));
    seed.onShutdown().block();
    ms.onShutdown().block();
}
Also used : RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) GreetingServiceImpl(io.scalecube.services.examples.helloworld.service.GreetingServiceImpl) Microservices(io.scalecube.services.Microservices) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) GreetingsService(io.scalecube.services.examples.helloworld.service.api.GreetingsService) Address(io.scalecube.net.Address) ScalecubeServiceDiscovery(io.scalecube.services.discovery.ScalecubeServiceDiscovery) Address(io.scalecube.net.Address) WebsocketTransportFactory(io.scalecube.transport.netty.websocket.WebsocketTransportFactory) GreetingServiceImpl(io.scalecube.services.examples.helloworld.service.GreetingServiceImpl) RSocketServiceTransport(io.scalecube.services.transport.rsocket.RSocketServiceTransport) Microservices(io.scalecube.services.Microservices)

Aggregations

Address (io.scalecube.net.Address)21 ScalecubeServiceDiscovery (io.scalecube.services.discovery.ScalecubeServiceDiscovery)17 WebsocketTransportFactory (io.scalecube.transport.netty.websocket.WebsocketTransportFactory)17 Mono (reactor.core.publisher.Mono)17 RSocketServiceTransport (io.scalecube.services.transport.rsocket.RSocketServiceTransport)15 Microservices (io.scalecube.services.Microservices)12 ServiceMessage (io.scalecube.services.api.ServiceMessage)7 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)7 ServiceDiscoveryEvent (io.scalecube.services.discovery.api.ServiceDiscoveryEvent)6 List (java.util.List)6 ServiceDiscoveryFactory (io.scalecube.services.discovery.api.ServiceDiscoveryFactory)5 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)5 Sinks (reactor.core.publisher.Sinks)5 Duration (java.time.Duration)4 Collections (java.util.Collections)4 Map (java.util.Map)4 Optional (java.util.Optional)4 Flux (reactor.core.publisher.Flux)4 ServiceCall (io.scalecube.services.ServiceCall)3 ServiceInfo (io.scalecube.services.ServiceInfo)3