У меня есть фиктивная конечная точка на 8001, которая будет отображать все, что ему предоставлено.У меня есть конечная точка http, которая отправит конец URL в фиктивную конечную точку и предоставит ответ от ответа конечной точки.Это работает нормально.
Проблема в том, что я хочу, чтобы по маршруту http использовалось только 1 TCP-соединение с конечной точкой 8001.
Я создал рабочую группу, как описано в другом месте, и установил количество рабочих.1. Просматривая исходный код, я думаю, что этот подход должен работать.
Однако, когда я делаю эту команду bash:
for a in {1..5}; do curl "http://localhost:8080/upstream/REQUESTNUM$a" > $a.txt & done;
Я вижу несколько подключений к 8001. Я ожидал, что запросы конечной точки http должны будут совместно использовать одного работника пула, но этоПохоже, это не так.
Возможно, я что-то упустил, или, возможно, есть другой способ достичь моей цели - использовать только 1 внутреннее tcp-соединение для всех запросов http.
Как мне это сделать?
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext
xmlns="http://camel.apache.org/schema/spring">
<route id="mockUpstream">
<from
uri="netty4:tcp://localhost:8001?sync=true&textline=true&keepAlive=true&disconnect=false&reuseChannel=true" />
<log message="Incoming to upstream: ${body}" />
<transform>
<simple>${body}</simple>
</transform>
</route>
<route id="httpServer">
<from
uri="netty4-http:http://0.0.0.0:8080/upstream?matchOnUriPrefix=true" />
<!-- optional just use CamelHttpQuery from header, for full query -->
<log
message="Incoming http command: ${in.headers[CamelHttpPath]}" />
<transform>
<simple>${in.headers[CamelHttpPath]}</simple>
</transform>
<to
uri="netty4:tcp://localhost:8001?workerGroup=#sharedPool&sync=true&textline=true&keepAlive=true&disconnect=false&reuseChannel=true" />
<transform>
<simple>${body}</simple>
</transform>
</route>
</camelContext>
<bean id="poolBuilder"
class="org.apache.camel.component.netty4.NettyWorkerPoolBuilder">
<property name="workerCount" value="1" />
</bean>
<bean id="sharedPool" class="io.netty.channel.EventLoopGroup"
factory-bean="poolBuilder" factory-method="build"
destroy-method="shutdown">
</bean>
</beans>