【问题标题】:Dynamic object parameter in camel consumer endpoint url骆驼消费者端点网址中的动态对象参数
【发布时间】:2016-10-17 22:42:42
【问题描述】:

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

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

但问题在于设置 ssl 参数。

Netty 组件将此定义为路由 url 参数,因此它看起来像这样:

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

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

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

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

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

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

【问题讨论】:

  • 您研究过 bean 绑定吗? camel.apache.org/bean.html
  • 你能给我举个例子如何使用bean绑定,这样我就可以传递bean工厂方法的参数了吗?

标签: java spring apache-camel


【解决方案1】:

您可以根据camel FAQ 使用收件人列表 EIP。

【讨论】:

    【解决方案2】:

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

    谢谢史蒂夫,这是一个很好的建议。

    我有一个类似的问题,我采纳了你的建议,它的工作!

    在我的 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}"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-03
      • 2015-08-27
      • 2013-05-23
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多