Re: [akka-user] using AKKA-HTTP and AKKA-Camel together on the same port possible?
Both http servers (jetty and akka-http) will try to bind to the specified port (9001) and the OS will only allow the first one to succeed, leading to the exception you are seeing in the process that is second to start. If you must have them serve requests on the same port, then the way I see is to have each use a different port and put a proxy on 9001 that forwards to either of them based on the path. But if you can, just use different ports :-) Cheers, Michal On 13/04/17 10:11, Seongjong Jeon wrote: Hey folks, I've used AKKA Camel for HTTP service... It's endpoint is "jetty:http://0.0.0.0:9001/test; and recently I figured out that AKKA-HTTP is easy and fun. So I tried bind akka-http route("http://0.0.0.0:9001/hi on same port. val route = path("hi") { get { complete("hello") } } Http().bindAndHandle(route, "0.0.0.0", 9001) I thought that both work properly 'cause two endpoints are different AKKA Camel : http://0.0.0.0:9001/test AKKA HTTP: http://0.0.0.0:9001/hi But it didn't work with bindException. WARN 2017-04-13 17:29:39 [catalogrefinement-akka.actor.default-dispatcher-18]o.e.j.u.component.AbstractLifeCycle : FAILED ServerConnector@74a1b9a6{HTTP/1.1}{0.0.0.0:9001}: java.net.BindException: Address already in use java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:321) at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.eclipse.jetty.server.Server.doStart(Server.java:366) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.apache.camel.component.jetty.JettyHttpComponent.connect(JettyHttpComponent.java:341) at org.apache.camel.http.common.HttpCommonEndpoint.connect(HttpCommonEndpoint.java:143) at org.apache.camel.http.common.HttpConsumer.doStart(HttpConsumer.java:54) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) at org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:3371) at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:3688) at org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:3624) at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3544) at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3567) at org.apache.camel.impl.DefaultCamelContext.startRouteService(DefaultCamelContext.java:3421) at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:1010) at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3397) at org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:942) at org.apache.camel.builder.RouteBuilder.populateRoutes(RouteBuilder.java:418) at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:331) at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:869) at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:866) at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2976) at org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:866) at akka.camel.internal.ConsumerRegistrar$$anonfun$receive$4.applyOrElse(CamelSupervisor.scala:200) at akka.actor.Actor$class.aroundReceive(Actor.scala:497) at akka.camel.internal.ConsumerRegistrar.aroundReceive(CamelSupervisor.scala:195) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526) at akka.actor.ActorCell.invoke_aroundBody0(ActorCell.scala:495) at akka.actor.ActorCell$AjcClosure1.run(ActorCell.scala:1) at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) at akka.kamon.instrumentation.ActorMonitors$TrackedActor$$anonfun$processMessage$2.apply(ActorMonitor.scala:79) at kamon.trace.Tracer$.withContext(TracerModule.scala:58) at akka.kamon.instrumentation.ActorMonitors$TrackedActor.processMessage(ActorMonitor.scala:78) at akka.kamon.instrumentation.ActorCellInstrumentation.aroundBehaviourInvoke(ActorInstrumentation.scala:44) at akka.actor.ActorCell.invoke(ActorCell.scala:488) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) at akka.dispatch.Mailbox.run(Mailbox.scala:224) at akka.dispatch.Mailbox.exec(Mailbox.scala:234) at
[akka-user] using AKKA-HTTP and AKKA-Camel together on the same port possible?
Hey folks, I've used AKKA Camel for HTTP service... It's endpoint is "jetty:http://0.0.0.0:9001/test; and recently I figured out that AKKA-HTTP is easy and fun. So I tried bind akka-http route("http://0.0.0.0:9001/hi on same port. val route = path("hi") { get { complete("hello") } } Http().bindAndHandle(route, "0.0.0.0", 9001) I thought that both work properly 'cause two endpoints are different AKKA Camel : http://0.0.0.0:9001/test AKKA HTTP: http://0.0.0.0:9001/hi But it didn't work with bindException. WARN 2017-04-13 17:29:39 [catalogrefinement-akka.actor.default-dispatcher-18]o.e.j.u.component.AbstractLifeCycle : FAILED ServerConnector@74a1b9a6{HTTP/1.1}{0.0.0.0:9001}: java.net.BindException: Address already in use java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:321) at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.eclipse.jetty.server.Server.doStart(Server.java:366) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.apache.camel.component.jetty.JettyHttpComponent.connect(JettyHttpComponent.java:341) at org.apache.camel.http.common.HttpCommonEndpoint.connect(HttpCommonEndpoint.java:143) at org.apache.camel.http.common.HttpConsumer.doStart(HttpConsumer.java:54) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) at org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:3371) at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:3688) at org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:3624) at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3544) at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3567) at org.apache.camel.impl.DefaultCamelContext.startRouteService(DefaultCamelContext.java:3421) at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:1010) at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3397) at org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:942) at org.apache.camel.builder.RouteBuilder.populateRoutes(RouteBuilder.java:418) at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:331) at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:869) at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:866) at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2976) at org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:866) at akka.camel.internal.ConsumerRegistrar$$anonfun$receive$4.applyOrElse(CamelSupervisor.scala:200) at akka.actor.Actor$class.aroundReceive(Actor.scala:497) at akka.camel.internal.ConsumerRegistrar.aroundReceive(CamelSupervisor.scala:195) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526) at akka.actor.ActorCell.invoke_aroundBody0(ActorCell.scala:495) at akka.actor.ActorCell$AjcClosure1.run(ActorCell.scala:1) at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) at akka.kamon.instrumentation.ActorMonitors$TrackedActor$$anonfun$processMessage$2.apply(ActorMonitor.scala:79) at kamon.trace.Tracer$.withContext(TracerModule.scala:58) at akka.kamon.instrumentation.ActorMonitors$TrackedActor.processMessage(ActorMonitor.scala:78) at akka.kamon.instrumentation.ActorCellInstrumentation.aroundBehaviourInvoke(ActorInstrumentation.scala:44) at akka.actor.ActorCell.invoke(ActorCell.scala:488) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) at akka.dispatch.Mailbox.run(Mailbox.scala:224) at akka.dispatch.Mailbox.exec(Mailbox.scala:234) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) Is there any way to bind both? Do I need to use only one at a moment? -- >> Read the docs: http://akka.io/docs/ >> Check the FAQ: >> http://doc.akka.io/docs/akka/current/additional/faq.html >>