use of io.scalecube.services.discovery.ScalecubeServiceDiscovery in project scalecube by scalecube.
the class CompositeDiscoveryExample method main.
/**
* Main program.
*
* @param args arguments
*/
public static void main(String[] args) {
Microservices seed1 = Microservices.builder().discovery("seed1", serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint)).options(opts -> opts.memberAlias("seed1"))).transport(RSocketServiceTransport::new).startAwait();
Microservices seed2 = Microservices.builder().discovery("seed2", serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint)).options(opts -> opts.memberAlias("seed2"))).transport(RSocketServiceTransport::new).startAwait();
final Address seed1Address = seed1.discovery("seed1").address();
final Address seed2Address = seed2.discovery("seed2").address();
Microservices ms1 = Microservices.builder().discovery("ms1", endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).options(opts -> opts.memberAlias("ms1")).membership(cfg -> cfg.seedMembers(seed1Address))).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl1()).startAwait();
Microservices ms2 = Microservices.builder().discovery("ms2", endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).options(opts -> opts.memberAlias("ms2")).membership(cfg -> cfg.seedMembers(seed2Address))).transport(RSocketServiceTransport::new).services(new GreetingServiceImpl2()).startAwait();
Microservices compositeMs = Microservices.builder().discovery("domain1", endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).options(opts -> opts.memberAlias("domain1")).membership(cfg -> cfg.seedMembers(seed1Address))).discovery("domain2", endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).options(opts -> opts.memberAlias("domain2")).membership(cfg -> cfg.seedMembers(seed2Address))).transport(RSocketServiceTransport::new).startAwait();
Greeting greeting1 = compositeMs.call().api(GreetingsService1.class).sayHello("hello one").block();
System.err.println("This is response from GreetingsService1: " + greeting1.message());
Greeting greeting2 = compositeMs.call().api(GreetingsService2.class).sayHello("hello two").block();
System.err.println("This is response from GreetingsService2: " + greeting2.message());
}
use of io.scalecube.services.discovery.ScalecubeServiceDiscovery in project scalecube by scalecube.
the class ExceptionMapperExample method main.
/**
* Example runner.
*
* @param args program arguments.
* @throws InterruptedException exception.
*/
public static void main(String[] args) throws InterruptedException {
Microservices ms1 = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(RSocketServiceTransport::new).defaultErrorMapper(// default mapper for whole node
new ServiceAProviderErrorMapper()).services(ServiceInfo.fromServiceInstance(new ServiceAImpl()).errorMapper(// mapper per service instance
new ServiceAProviderErrorMapper()).build()).startAwait();
System.err.println("ms1 started: " + ms1.serviceAddress());
final Address address1 = ms1.discovery().address();
Microservices ms2 = Microservices.builder().discovery(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(address1))).transport(RSocketServiceTransport::new).services(call -> {
ServiceA serviceA = call.errorMapper(// service client error mapper
new ServiceAClientErrorMapper()).api(ServiceA.class);
ServiceB serviceB = new ServiceBImpl(serviceA);
return Collections.singleton(ServiceInfo.fromServiceInstance(serviceB).build());
}).startAwait();
System.err.println("ms2 started: " + ms2.serviceAddress());
ms2.call().api(ServiceB.class).doAnotherStuff(0).subscribe(System.out::println, th -> System.err.println("No service client mapper is defined for ServiceB, " + "so default scalecube mapper is used! -> " + th), () -> System.out.println("Completed!"));
Thread.currentThread().join();
}
use of io.scalecube.services.discovery.ScalecubeServiceDiscovery in project scalecube by scalecube.
the class Example3 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(endpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(endpoint)).membership(cfg -> cfg.seedMembers(seedAddress))).transport(RSocketServiceTransport::new).services(new BidiGreetingImpl()).startAwait();
// Create service proxy
BidiGreetingService service = seed.call().api(BidiGreetingService.class);
// Execute the services and subscribe to service events
service.greeting(Flux.fromArray(new String[] { "joe", "dan", "roni" })).doOnNext(System.out::println).blockLast();
Mono.whenDelayError(seed.shutdown(), ms.shutdown()).block();
}
use of io.scalecube.services.discovery.ScalecubeServiceDiscovery 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();
}
use of io.scalecube.services.discovery.ScalecubeServiceDiscovery in project scalecube by scalecube.
the class ServiceAuthRemoteTest method beforeAll.
@BeforeAll
static void beforeAll() {
StepVerifier.setDefaultTimeout(TIMEOUT);
principalMapper = authData -> new UserProfile(authData.get("name"), authData.get("role"));
service = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(() -> new RSocketServiceTransport().authenticator(authenticator)).services(ServiceInfo.fromServiceInstance(new SecuredServiceImpl()).principalMapper(principalMapper).build()).startAwait();
serviceWithoutAuthenticator = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(RSocketServiceTransport::new).services(ServiceInfo.fromServiceInstance(new AnotherSecuredServiceImpl()).principalMapper(principalMapper).build()).startAwait();
partiallySecuredService = Microservices.builder().discovery(serviceEndpoint -> new ScalecubeServiceDiscovery().transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory())).options(opts -> opts.metadata(serviceEndpoint))).transport(() -> new RSocketServiceTransport().authenticator(authenticator)).services(ServiceInfo.fromServiceInstance(new PartiallySecuredServiceImpl()).principalMapper(principalMapper).build()).startAwait();
}
Aggregations