当前位置: 首页 > 知识库问答 >
问题:

骆驼节气门属性不起作用

田仲卿
2023-03-14

我在我的路线上使用油门,如下所示:

  <throttle id="_throttle1" rejectExecution="true" timePeriodMillis="10000">
            <constant>1</constant>
            <bean beanType="com.company.Test"
                id="_bean1" method="test"/>
  </throttle>

我在我的路线中使用org . Apache . camel . spring . SPI . bridgepropertyplaceholderconfigure,这很有效。

我想使时间周期数毫秒参数化,例如:

 <throttle id="_throttle1" rejectExecution="true" timePeriodMillis="{{test}}">
            <constant>1</constant>
            <bean beanType="com.company.Test"
                id="_bean1" method="test"/>
  </throttle>

我有以下错误:

 java.lang.NumberFormatException: For input string: "{{test}}"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_162]
    at java.lang.Long.parseLong(Long.java:578) ~[na:1.8.0_162]
    at java.lang.Long.parseLong(Long.java:631) ~[na:1.8.0_162]
    at com.sun.xml.bind.DatatypeConverterImpl._parseLong(DatatypeConverterImpl.java:133) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$19.parse(RuntimeBuiltinLeafInfoImpl.java:759) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$19.parse(RuntimeBuiltinLeafInfoImpl.java:757) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:245) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.startElement(StructureLoader.java:212) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:577) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:556) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:75) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:168) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:244) ~[jaxb-core-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:281) ~[jaxb-core-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:250) ~[jaxb-core-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:281) ~[jaxb-core-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:250) ~[jaxb-core-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:127) ~[jaxb-core-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:110) ~[jaxb-core-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:103) ~[jaxb-core-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.runtime.BinderImpl.associativeUnmarshal(BinderImpl.java:161) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at com.sun.xml.bind.v2.runtime.BinderImpl.unmarshal(BinderImpl.java:132) ~[jaxb-impl-2.3.0.1.jar:2.3.0.1]
    at org.apache.camel.model.ModelHelper.loadRoutesDefinition(ModelHelper.java:171) ~[camel-core-2.22.0.jar:2.22.0]
    at org.apache.camel.model.ModelHelper.loadRoutesDefinition(ModelHelper.java:152) ~[camel-core-2.22.0.jar:2.22.0]
    at org.apache.camel.impl.DefaultCamelContext.loadRoutesDefinition(DefaultCamelContext.java:1036) ~[camel-core-2.22.0.jar:2.22.0]
    at fr.erdf.ose.ile.routes.RouteManager.loadXMLRoutes(RouteManager.java:43) ~[RouteManager.class:na]

你能帮我吗?

共有2个答案

文建业
2023-03-14

请参阅有关使用属性占位符的Camel文档http://camel.apache.org/using-propertyplaceholder.html

在 XML DSL 中对任何类型的特性使用属性占位符部分,例如,您需要将 prop:/占位符命名空间一起使用,以便能够将值指定为占位符。

缑泓
2023-03-14

根据骆驼限制文档,您至少可以使请求数动态化。但是,他们没有提到时间跨度。

因此,您可以在固定的毫秒数内配置X个请求,而不是在X毫秒内配置1个请求。

<throttle timePeriodMillis="1000">
    <!-- use a header to determine how many messages to throttle per sec -->
    <header>throttleValue</header>
    <to uri="..."/>
</throttle>

您可以尝试使用属性占位符代替消息头。

<constant>{{test}}</constant>

如果这不起作用,您仍然可以使用属性占位符在路由中设置邮件头。

<setHeader headerName="throttleValue">
    <constant>{{test}}</constant>
</setHeader>
 类似资料:
  • 我需要在Exchange对象的属性上传递一些参数。据我所知和阅读,最好在交换属性上创建我的参数,因为消息的标头可以在路由期间更改。Camel正在从一个路由到另一个路由创建新的交换,但不保留我的任何参数的历史记录。 现在一些上下文:我正在使用部署在WebLogic 12C上的Camel(2.16.1) 相关的Maven部分: 骆驼上下文: 如您所见,我使用了一个名为TestProcess的类来影响E

  • 我试图弄清楚骆驼的节流概念。我已经看到了骆驼的航线政策,但这适用于许多飞行中的交换。 我的路线如下: 现在我的用例是,我想在这些路由之间传输比如说2000条消息,我知道可以通过来完成。但是,我不得不决定如何在下一个2000条消息被路由时控制它。我只想在接收者队列变为空时路由下2000条消息。 例如,消息从队列路由到。假设2K消息已成功路由,现在我想挂起我的路由,这样它就不会传输更多的消息,直到队列

  • 我正在尝试从SFTP服务器位置下载文件,但日志看起来不错,最后没有任何东西从服务器下载到本地。没有错误也来了。请提前感谢您的意见。 可用的 SFTP 文件: 路由器: 日志: 砰.xml

  • 我已经配置了一个路由来从交易所中提取一些数据并聚合它们;这是简单的总结: 问题是聚合完成永远不起作用,例如,这是我的测试示例: ReflelctionTestUtils.setField;ReflectionTestUtils.setFiled;producerTemplate.send(FingerprintHistoryRouteBuilder.FINGERPRINT_HISTORY_ENDP

  • 我正在设置路由1中骆驼交换的属性。我正在尝试在拆分器内的第二条路由中更新该属性。但是在拆分器的第二次迭代中,我得到的是我在路由1中设置的原始值,而不是新的更新值。下面是我正在尝试的示例。。 豆子里面: 为什么不更新属性?甚至我也试着在标题中设置。同样的结果。非常感谢。

  • 问题可能也与我对这个概念的理解有关。 正在调用代理bean,它是。代理bean接口是使用类实现的。所以我期待返回的通过传递,然后在控制台上流式传输。 Application Context 会计界面 会计Util 动作课 但是我有例外: 还有一个问题,我可以为单个提供多个 我希望使用不同的方法调用不同的,但只是单个接口的一部分。