Camel действительно позволяет вам setup routes using OSGi Blueprint. Он также позволяет использовать Property Placeholders with Blueprint values. Но вам нужно будет поместить эти значения в URI.
Таким образом, вы могли бы использовать что-то вроде:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<cm:property-placeholder persistent-id="my-placeholders" update-strategy="reload">
<cm:default-properties>
<cm:property name="maxTotalConnections" value="200"/>
<cm:property name="connectionsPerRoute" value="20"/>
</cm:default-properties>
</cm:property-placeholder>
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="timer:test" />
<to uri="http4:localhost:80/resource?maxTotalConnections={{maxTotalConnections}}&connectionsPerRoute={{connectionsPerRoute}}" />
</route>
</camelContext>
</blueprint>
компонентов опции устанавливается, когда первый маршрут создается с помощью этого компонента. Глядя в коде, maxTotalConnections и connectionsPerRoute устанавливаются при creating a new endpoint так:
HttpClientConnectionManager localConnectionManager = clientConnectionManager;
if (localConnectionManager == null) {
// need to check the parameters of maxTotalConnections and connectionsPerRoute
int maxTotalConnections = getAndRemoveParameter(parameters, "maxTotalConnections", int.class, 0);
int connectionsPerRoute = getAndRemoveParameter(parameters, "connectionsPerRoute", int.class, 0);
localConnectionManager = createConnectionManager(createConnectionRegistry(x509HostnameVerifier, sslContextParameters), maxTotalConnections, connectionsPerRoute);
}
После первого маршрута является установка, то clientConnectionManager устанавливается. Для любых других маршрутов, установленных после первого, поскольку clientConnectionManager привязан к одному экземпляру компонента Http4, похоже, что эти параметры игнорируются. Я бы использовал одни и те же параметры компонента на всех маршрутах.
Вы можете создавать новые компоненты HTTP4, создавая новые компоненты и предоставляя им идентификатор. Вы можете использовать это для создания нескольких компонентов http4 с различными параметрами компонентов.
<bean id="http4-foo" class="org.apache.camel.component.http4.HttpComponent"/>
<bean id="http4-bar" class="org.apache.camel.component.http4.HttpComponent"/>
Затем просто используйте эти идентификаторы при настройке конечных точек.
<to uri="http4-foo:localhost:80/resource?maxTotalConnections=300"/>
Что такое 'connectionsPerHost'? Я не нашел его в доке. Вы имеете в виду 'maxTotalConnections'? – tuk
Ой, да, это была просто ошибка. Почини. – AndyN
Если у меня есть несколько маршрутов на моем верблюде, я должен «maxTotalConnections» для каждого маршрута, как вы показали в ответе? Если да, то если я дам 'maxTotalConnection' как' x' в одном маршруте и 'maxTotalConnections' как' y' в одном маршруте, как будет вести себя маршрут верблюда-http? – tuk