All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.scalecube.services.examples.codecs.Example1 Maven / Gradle / Ivy

The newest version!
package io.scalecube.services.examples.codecs;

import io.scalecube.services.Address;
import io.scalecube.services.Microservices;
import io.scalecube.services.Microservices.Context;
import io.scalecube.services.discovery.ScalecubeServiceDiscovery;
import io.scalecube.services.examples.helloworld.service.GreetingServiceImpl;
import io.scalecube.services.examples.helloworld.service.api.GreetingsService;
import io.scalecube.services.transport.rsocket.RSocketServiceTransport;
import io.scalecube.transport.netty.websocket.WebsocketTransportFactory;

public class Example1 {

  public static final String JSON = "application/json";
  public static final String PROTOSTUFF = "application/protostuff";
  public static final String OCTET_STREAM = "application/octet-stream";

  /**
   * Start the example.
   *
   * @param args ignored
   */
  public static void main(String[] args) {
    // ScaleCube Node with no members
    Microservices seed =
        Microservices.start(
            new Context()
                .discovery(
                    serviceEndpoint ->
                        new ScalecubeServiceDiscovery()
                            .transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
                            .options(opts -> opts.metadata(serviceEndpoint)))
                .transport(RSocketServiceTransport::new)
            // .defaultContentType(PROTOSTUFF) // set explicit default data format
            );

    final Address seedAddress = seed.discoveryAddress();

    // Construct a ScaleCube node which joins the cluster hosting the Greeting Service
    Microservices ms =
        Microservices.start(
            new Context()
                .discovery(
                    endpoint ->
                        new ScalecubeServiceDiscovery()
                            .transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
                            .options(opts -> opts.metadata(endpoint))
                            .membership(cfg -> cfg.seedMembers(seedAddress.toString())))
                .transport(RSocketServiceTransport::new)
                .services(new GreetingServiceImpl()));

    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.close();
    ms.close();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy