243.8. 在同一端口使用多个路由
在同一 CamelContext 中,您可以拥有来自共享同一端口的 Netty4 HTTP 的多个路由(如 io.netty.bootstrap.ServerBootstrap 实例)。执行此操作需要在路由中有多个 bootstrap 选项,因为路由将共享相同的 io.netty.bootstrap.ServerBootstrap 实例。实例将使用创建的第一个路由中的选项进行配置。
路由必须相同配置的选项是 org.apache.camel.component.netty4.NettyServerBootstrapConfiguration 配置类中定义的所有选项。如果您使用不同的选项配置了另一个路由,Camel 会在启动时抛出异常,表示选项不相同。要缓解这个问题,请确保所有选项都相同。
下面是有两个路由共享同一端口的示例:
共享同一端口的两个路由
下面是一个错误配置的 2nd 路由的示例,它没有相同的 org.apache.camel.component.netty4.NettyServerBootstrapConfiguration 选项作为 1st 路由。这将导致 Camel 在启动时失败。
两个路由共享同一端口,但第二路由配置错误,并将在启动时失败
243.8.1. 使用多个路由重复使用相同的服务器 bootstrap 配置 复制链接链接已复制到粘贴板!
通过在 org.apache.camel.component.netty4.NettyServerBootstrapConfiguration 类型的单个实例中配置通用服务器 bootstrap 选项,我们可以对 Netty4 HTTP 用户使用 bootstrapConfiguration 选项来引用和重复使用所有消费者的相同选项。
<bean id="nettyHttpBootstrapOptions" class="org.apache.camel.component.netty4.NettyServerBootstrapConfiguration"> <property name="backlog" value="200"/> <property name="connectionTimeout" value="20000"/> <property name="workerCount" value="16"/> </bean>
<bean id="nettyHttpBootstrapOptions" class="org.apache.camel.component.netty4.NettyServerBootstrapConfiguration">
<property name="backlog" value="200"/>
<property name="connectionTimeout" value="20000"/>
<property name="workerCount" value="16"/>
</bean>
在您引用此选项的路由中,如下所示
243.8.2. 使用 OSGi 容器中多个捆绑包的多个路由重复使用相同的服务器引导配置 复制链接链接已复制到粘贴板!
详情请查看 Netty HTTP 服务器 示例。