繁体   English   中英

骆驼使用者终结点URL中的动态对象参数

[英]Dynamic object parameter in camel consumer endpoint url

我在春天用骆驼。 我们的一条路由应将TCP消息发送到动态选择的端点。 由于端点只是一个字符串,我知道我可以使用

.toD("netty4://...")

但是问题在于设置ssl参数。

Netty组件将此定义为route url参数,因此如下所示:

.toD("netty4://...?sslContextParameters=mySslContextParameters");

为了使这项工作,我有一个bean:

@Bean
public SslContextParameters mySslContextParameters() {
    ...
    return sslContextParameters();
}

这将它绑定到该单个bean实例,但是我需要的是一个动态配置的bean,以便我可以根据从生产者那里获得的一些数据来设置SSL的不同参数。

当我可以调用工厂方法并将一些参数传递给它时,我想要的是这样的东西(我知道这不是正确的骆驼语法):

.toD("netty://...?sslContextParameters=${bean('mySslContestParameters(${exchange.param1}, ${exchange.param2}')}");

您可以根据此骆驼常见问题解答使用收件人列表EIP。

您可以根据此骆驼常见问题解答使用收件人列表EIP。

Thx Steve,这是一个很好的建议。

我有一个类似的问题,我用了你的建议,这很有效!

在我的camel-context.xml中,我定义了两个sslContextParameters

...
<camel:sslContextParameters id="firstSsl">
    <camel:keyManagers keyPassword="changeit">
        <camel:keyStore resource="/test/client.keystore.jks" password="changeit" />
    </camel:keyManagers>
    <camel:trustManagers>
            <camel:keyStore resource="/test/client.truststore.jks" password="changeit" />
    </camel:trustManagers>
</camel:sslContextParameters>
<camel:sslContextParameters id="secondSsl">
    <camel:keyManagers keyPassword="otherpassword">
        <camel:keyStore resource="/test/other-keystore.jks" password="otherpassword" />
    </camel:keyManagers>
    <camel:trustManagers>
        <camel:keyStore resource="/test/other-truststore.jks" password="otherpassword" />
    </camel:trustManagers>
</camel:sslContextParameters>
...

在我的routeBuilder中

.setHeader("sslContext", constant("firstSsl"))
//or
.setHeader("sslContext", constant("secondSsl"))
...
.recipientList(simple("https4://override/?bridgeEndpoint=false&sslContextParametersRef=${headers.sslContext}"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM