Search in sources :

Example 1 with ServerBinding

use of akka.http.javadsl.ServerBinding in project swagger-akka-http-sample-java by pjfanning.

the class Main method main.

public static void main(String[] args) throws Exception {
    // boot up server using the route as defined below
    ActorSystem system = ActorSystem.create("routes");
    final Http http = Http.get(system);
    // In order to access all directives we need an instance where the routes
    // are defined.
    Main app = new Main();
    final Route routes = app.concat(new Routes().createRoute(), new SwaggerDocService().createRoute());
    final CompletionStage<ServerBinding> binding = http.newServerAt("localhost", 12345).bind(routes);
    System.out.println("Server online at http://localhost:12345/\nPress RETURN to stop...");
    // let it run until user presses return
    System.in.read();
    // trigger unbinding from the port
    binding.thenCompose(ServerBinding::unbind).thenAccept(// and shutdown when done
    unbound -> system.terminate());
}
Also used : ActorSystem(akka.actor.ActorSystem) Http(akka.http.javadsl.Http) Routes(com.example.akka.routes.Routes) ServerBinding(akka.http.javadsl.ServerBinding) Route(akka.http.javadsl.server.Route)

Example 2 with ServerBinding

use of akka.http.javadsl.ServerBinding in project mantis by Netflix.

the class MantisMasterAPI method main.

public static void main(String[] args) throws Exception {
    // boot up server using the route as defined below
    int port = 8182;
    TestHelpers.setupMasterConfig();
    ActorSystem system = ActorSystem.create("MantisMasterAPI");
    final ActorRef actor = system.actorOf(Props.create(DeadLetterActor.class));
    system.eventStream().subscribe(actor, DeadLetter.class);
    final Http http = Http.get(system);
    final ActorMaterializer materializer = ActorMaterializer.create(system);
    final AuditEventSubscriber auditEventSubscriber = new AuditEventSubscriberLoggingImpl();
    ActorRef auditEventBrokerActor = system.actorOf(AuditEventBrokerActor.props(auditEventSubscriber), "AuditEventBroker");
    final AuditEventSubscriber auditEventSubscriberAkka = new AuditEventSubscriberAkkaImpl(auditEventBrokerActor);
    final LifecycleEventPublisher lifecycleEventPublisher = new LifecycleEventPublisherImpl(auditEventSubscriberAkka, new StatusEventSubscriberLoggingImpl(), new WorkerEventSubscriberLoggingImpl());
    IMantisStorageProvider storageProvider = new MantisStorageProviderAdapter(new SimpleCachedFileStorageProvider(), lifecycleEventPublisher);
    ActorRef jobClustersManager = system.actorOf(JobClustersManagerActor.props(new MantisJobStore(storageProvider), lifecycleEventPublisher), "JobClustersManager");
    final FakeMantisScheduler fakeScheduler = new FakeMantisScheduler(jobClustersManager);
    jobClustersManager.tell(new JobClusterManagerProto.JobClustersManagerInitialize(fakeScheduler, true), ActorRef.noSender());
    // Schedulers.newThread().createWorker().schedulePeriodically(() -> jobClustersManager.tell(new NullPointerException(), ActorRef.noSender()),0, 100, TimeUnit.SECONDS);
    setupDummyAgentClusterAutoScaler();
    final JobClusterRouteHandler jobClusterRouteHandler = new JobClusterRouteHandlerAkkaImpl(jobClustersManager);
    final JobRouteHandler jobRouteHandler = new JobRouteHandlerAkkaImpl(jobClustersManager);
    MasterDescription masterDescription = new MasterDescription("localhost", "127.0.0.1", port, port + 2, port + 4, "api/postjobstatus", port + 6, System.currentTimeMillis());
    final MasterDescriptionRoute masterDescriptionRoute = new MasterDescriptionRoute(masterDescription);
    Duration idleTimeout = system.settings().config().getDuration("akka.http.server.idle-timeout");
    logger.info("idle timeout {} sec ", idleTimeout.getSeconds());
    ActorRef agentsErrorMonitorActor = system.actorOf(AgentsErrorMonitorActor.props(), "AgentsErrorMonitor");
    ActorRef statusEventBrokerActor = system.actorOf(StatusEventBrokerActor.props(agentsErrorMonitorActor), "StatusEventBroker");
    agentsErrorMonitorActor.tell(new AgentsErrorMonitorActor.InitializeAgentsErrorMonitor(fakeScheduler), ActorRef.noSender());
    final JobStatusRouteHandler jobStatusRouteHandler = new JobStatusRouteHandlerAkkaImpl(system, statusEventBrokerActor);
    final AgentClusterOperationsImpl agentClusterOperations = new AgentClusterOperationsImpl(storageProvider, new JobMessageRouterImpl(jobClustersManager), fakeScheduler, lifecycleEventPublisher, "cluster");
    final JobDiscoveryRouteHandler jobDiscoveryRouteHandler = new JobDiscoveryRouteHandlerAkkaImpl(jobClustersManager, idleTimeout);
    final JobRoute v0JobRoute = new JobRoute(jobRouteHandler, system);
    final JobDiscoveryRoute v0JobDiscoveryRoute = new JobDiscoveryRoute(jobDiscoveryRouteHandler);
    final JobClusterRoute v0JobClusterRoute = new JobClusterRoute(jobClusterRouteHandler, jobRouteHandler, system);
    final JobStatusRoute v0JobStatusRoute = new JobStatusRoute(jobStatusRouteHandler);
    final AgentClusterRoute v0AgentClusterRoute = new AgentClusterRoute(agentClusterOperations, system);
    final JobClustersRoute v1JobClustersRoute = new JobClustersRoute(jobClusterRouteHandler, system);
    final JobsRoute v1JobsRoute = new JobsRoute(jobClusterRouteHandler, jobRouteHandler, system);
    final AdminMasterRoute v1AdminMasterRoute = new AdminMasterRoute(masterDescription);
    final AgentClustersRoute v1AgentClustersRoute = new AgentClustersRoute(agentClusterOperations);
    final JobDiscoveryStreamRoute v1JobDiscoveryStreamRoute = new JobDiscoveryStreamRoute(jobDiscoveryRouteHandler);
    final LastSubmittedJobIdStreamRoute v1LastSubmittedJobIdStreamRoute = new LastSubmittedJobIdStreamRoute(jobDiscoveryRouteHandler);
    final JobStatusStreamRoute v1JobStatusStreamRoute = new JobStatusStreamRoute(jobStatusRouteHandler);
    LocalMasterMonitor localMasterMonitor = new LocalMasterMonitor(masterDescription);
    LeadershipManagerLocalImpl leadershipMgr = new LeadershipManagerLocalImpl(masterDescription);
    leadershipMgr.setLeaderReady();
    LeaderRedirectionFilter leaderRedirectionFilter = new LeaderRedirectionFilter(localMasterMonitor, leadershipMgr);
    final MantisMasterRoute app = new MantisMasterRoute(leaderRedirectionFilter, masterDescriptionRoute, v0JobClusterRoute, v0JobRoute, v0JobDiscoveryRoute, v0JobStatusRoute, v0AgentClusterRoute, v1JobClustersRoute, v1JobsRoute, v1AdminMasterRoute, v1AgentClustersRoute, v1JobDiscoveryStreamRoute, v1LastSubmittedJobIdStreamRoute, v1JobStatusStreamRoute);
    final Flow<HttpRequest, HttpResponse, NotUsed> routeFlow = app.createRoute().flow(system, materializer);
    final CompletionStage<ServerBinding> binding = http.bindAndHandle(routeFlow, ConnectHttp.toHost("localhost", port), materializer);
    binding.exceptionally(failure -> {
        System.err.println("Something very bad happened! " + failure.getMessage());
        system.terminate();
        return null;
    });
    // Schedulers.newThread().createWorker().schedule(() -> leadershipMgr.stopBeingLeader(), 10, TimeUnit.SECONDS);
    System.out.println("Server online at http://localhost:" + port + "/\nPress RETURN to stop...");
    // let it run until user presses return
    System.in.read();
    binding.thenCompose(// trigger unbinding from the port
    ServerBinding::unbind).thenAccept(// and shutdown when done
    unbound -> system.terminate());
}
Also used : JobClusterRouteHandler(io.mantisrx.master.api.akka.route.handlers.JobClusterRouteHandler) AgentClusterRoute(io.mantisrx.master.api.akka.route.v0.AgentClusterRoute) FakeMantisScheduler(io.mantisrx.master.scheduler.FakeMantisScheduler) ActorRef(akka.actor.ActorRef) JobClusterRouteHandlerAkkaImpl(io.mantisrx.master.api.akka.route.handlers.JobClusterRouteHandlerAkkaImpl) JobClusterRoute(io.mantisrx.master.api.akka.route.v0.JobClusterRoute) Http(akka.http.javadsl.Http) ConnectHttp(akka.http.javadsl.ConnectHttp) JobStatusStreamRoute(io.mantisrx.master.api.akka.route.v1.JobStatusStreamRoute) NotUsed(akka.NotUsed) AgentsErrorMonitorActor(io.mantisrx.master.scheduler.AgentsErrorMonitorActor) ActorMaterializer(akka.stream.ActorMaterializer) JobStatusRouteHandlerAkkaImpl(io.mantisrx.master.api.akka.route.handlers.JobStatusRouteHandlerAkkaImpl) LifecycleEventPublisherImpl(io.mantisrx.master.events.LifecycleEventPublisherImpl) DeadLetterActor(io.mantisrx.master.DeadLetterActor) AgentClusterOperationsImpl(io.mantisrx.master.vm.AgentClusterOperationsImpl) JobStatusRouteHandler(io.mantisrx.master.api.akka.route.handlers.JobStatusRouteHandler) LastSubmittedJobIdStreamRoute(io.mantisrx.master.api.akka.route.v1.LastSubmittedJobIdStreamRoute) IMantisStorageProvider(io.mantisrx.server.master.persistence.IMantisStorageProvider) Duration(java.time.Duration) LeaderRedirectionFilter(io.mantisrx.server.master.LeaderRedirectionFilter) AuditEventSubscriberAkkaImpl(io.mantisrx.master.events.AuditEventSubscriberAkkaImpl) AuditEventSubscriberLoggingImpl(io.mantisrx.master.events.AuditEventSubscriberLoggingImpl) JobMessageRouterImpl(io.mantisrx.master.scheduler.JobMessageRouterImpl) JobDiscoveryRouteHandler(io.mantisrx.master.api.akka.route.handlers.JobDiscoveryRouteHandler) JobClustersRoute(io.mantisrx.master.api.akka.route.v1.JobClustersRoute) AuditEventSubscriber(io.mantisrx.master.events.AuditEventSubscriber) ActorSystem(akka.actor.ActorSystem) JobRouteHandlerAkkaImpl(io.mantisrx.master.api.akka.route.handlers.JobRouteHandlerAkkaImpl) MasterDescriptionRoute(io.mantisrx.master.api.akka.route.v0.MasterDescriptionRoute) JobRouteHandler(io.mantisrx.master.api.akka.route.handlers.JobRouteHandler) MasterDescription(io.mantisrx.server.core.master.MasterDescription) StatusEventSubscriberLoggingImpl(io.mantisrx.master.events.StatusEventSubscriberLoggingImpl) JobDiscoveryRoute(io.mantisrx.master.api.akka.route.v0.JobDiscoveryRoute) JobDiscoveryStreamRoute(io.mantisrx.master.api.akka.route.v1.JobDiscoveryStreamRoute) SimpleCachedFileStorageProvider(io.mantisrx.server.master.store.SimpleCachedFileStorageProvider) WorkerEventSubscriberLoggingImpl(io.mantisrx.master.events.WorkerEventSubscriberLoggingImpl) JobClusterManagerProto(io.mantisrx.master.jobcluster.proto.JobClusterManagerProto) HttpRequest(akka.http.javadsl.model.HttpRequest) AdminMasterRoute(io.mantisrx.master.api.akka.route.v1.AdminMasterRoute) AgentClustersRoute(io.mantisrx.master.api.akka.route.v1.AgentClustersRoute) JobStatusRoute(io.mantisrx.master.api.akka.route.v0.JobStatusRoute) HttpResponse(akka.http.javadsl.model.HttpResponse) LifecycleEventPublisher(io.mantisrx.master.events.LifecycleEventPublisher) MantisMasterRoute(io.mantisrx.master.api.akka.route.MantisMasterRoute) JobDiscoveryRouteHandlerAkkaImpl(io.mantisrx.master.api.akka.route.handlers.JobDiscoveryRouteHandlerAkkaImpl) ServerBinding(akka.http.javadsl.ServerBinding) MantisStorageProviderAdapter(io.mantisrx.server.master.persistence.MantisStorageProviderAdapter) JobRoute(io.mantisrx.master.api.akka.route.v0.JobRoute) JobsRoute(io.mantisrx.master.api.akka.route.v1.JobsRoute) LocalMasterMonitor(io.mantisrx.server.core.master.LocalMasterMonitor) LeadershipManagerLocalImpl(io.mantisrx.server.master.LeadershipManagerLocalImpl) MantisJobStore(io.mantisrx.server.master.persistence.MantisJobStore)

Example 3 with ServerBinding

use of akka.http.javadsl.ServerBinding in project mantis by Netflix.

the class MasterApiAkkaService method startAPIServer.

private void startAPIServer() {
    final Flow<HttpRequest, HttpResponse, NotUsed> routeFlow = this.mantisMasterRoute.createRoute().flow(system, materializer);
    final Http http = Http.get(system);
    ServerSettings defaultSettings = ServerSettings.create(system);
    java.time.Duration idleTimeout = system.settings().config().getDuration("akka.http.server.idle-timeout");
    logger.info("idle timeout {} sec ", idleTimeout.getSeconds());
    WebSocketSettings customWebsocketSettings = defaultSettings.getWebsocketSettings().withPeriodicKeepAliveMaxIdle(Duration.create(idleTimeout.getSeconds() - 1, TimeUnit.SECONDS)).withPeriodicKeepAliveMode("pong");
    ServerSettings customServerSettings = defaultSettings.withWebsocketSettings(customWebsocketSettings);
    final CompletionStage<ServerBinding> binding = http.bindAndHandle(routeFlow, ConnectHttp.toHost("0.0.0.0", port), customServerSettings, system.log(), materializer);
    binding.exceptionally(failure -> {
        System.err.println("API service exited, committing suicide !" + failure.getMessage());
        logger.info("Master API service exited in error, committing suicide !");
        system.terminate();
        System.exit(2);
        return null;
    });
    logger.info("Starting Mantis Master API on port {}", port);
    try {
        serviceLatch.await();
    } catch (InterruptedException e) {
        logger.error("Master API thread interrupted, committing suicide", e);
        System.exit(2);
    }
    binding.thenCompose(// trigger unbinding from the port
    ServerBinding::unbind).thenAccept(unbound -> {
        logger.error("Master API service unbind, committing suicide");
        system.terminate();
        System.exit(2);
    });
// and shutdown when done
}
Also used : HttpRequest(akka.http.javadsl.model.HttpRequest) ServerSettings(akka.http.javadsl.settings.ServerSettings) HttpResponse(akka.http.javadsl.model.HttpResponse) Http(akka.http.javadsl.Http) ConnectHttp(akka.http.javadsl.ConnectHttp) WebSocketSettings(akka.http.javadsl.settings.WebSocketSettings) NotUsed(akka.NotUsed) ServerBinding(akka.http.javadsl.ServerBinding)

Aggregations

Http (akka.http.javadsl.Http)3 ServerBinding (akka.http.javadsl.ServerBinding)3 NotUsed (akka.NotUsed)2 ActorSystem (akka.actor.ActorSystem)2 ConnectHttp (akka.http.javadsl.ConnectHttp)2 HttpRequest (akka.http.javadsl.model.HttpRequest)2 HttpResponse (akka.http.javadsl.model.HttpResponse)2 ActorRef (akka.actor.ActorRef)1 Route (akka.http.javadsl.server.Route)1 ServerSettings (akka.http.javadsl.settings.ServerSettings)1 WebSocketSettings (akka.http.javadsl.settings.WebSocketSettings)1 ActorMaterializer (akka.stream.ActorMaterializer)1 Routes (com.example.akka.routes.Routes)1 DeadLetterActor (io.mantisrx.master.DeadLetterActor)1 MantisMasterRoute (io.mantisrx.master.api.akka.route.MantisMasterRoute)1 JobClusterRouteHandler (io.mantisrx.master.api.akka.route.handlers.JobClusterRouteHandler)1 JobClusterRouteHandlerAkkaImpl (io.mantisrx.master.api.akka.route.handlers.JobClusterRouteHandlerAkkaImpl)1 JobDiscoveryRouteHandler (io.mantisrx.master.api.akka.route.handlers.JobDiscoveryRouteHandler)1 JobDiscoveryRouteHandlerAkkaImpl (io.mantisrx.master.api.akka.route.handlers.JobDiscoveryRouteHandlerAkkaImpl)1 JobRouteHandler (io.mantisrx.master.api.akka.route.handlers.JobRouteHandler)1