【问题标题】:Example for syntax for throttle油门的语法示例
【发布时间】:2016-03-27 08:23:04
【问题描述】:

我有一个简单的路由将消息从 SQS 移动到我的本地数据库:

class DlrSqsToDb extends RouteBuilder {
  """aws-sqs://123467890/test-queue?amazonSQSClient=%23awsSqsClient&amazonSQSEndpoint=https://sqs.eu-west-1.amazonaws.com""" ==> {
    setHeader("dlr_body", body)
    setHeader("msgid", "someid")
    to("sql:insert into camel_test (msgid, dlr_body) VALUES (:#msgid,:#dlr_body)?dataSource=dataSource")
  }
}

我想限制这个,以便 sqs 处理峰值,但我的本地数据库上的负载是有限的。例如,我可以做延迟(),但不能做油门():

....
 """aws-sqs://123467890/test-queue?amazonSQSClient=%23awsSqsClient&amazonSQSEndpoint=https://sqs.eu-west-1.amazonaws.com""" ==> {
delay(3000)
....

有效但

....
 """aws-sqs://123467890/test-queue?amazonSQSClient=%23awsSqsClient&amazonSQSEndpoint=https://sqs.eu-west-1.amazonaws.com""" ==> {
throttle(1)
....

无法编译:

[error]  found   : Int(1)
[error]  required: org.apache.camel.scala.Frequency
[error]     throttle(1)

和

....
 """aws-sqs://123467890/test-queue?amazonSQSClient=%23awsSqsClient&amazonSQSEndpoint=https://sqs.eu-west-1.amazonaws.com""" ==> {
throttle(new org.apache.camel.scala.Frequency(1,3000))
....

编译但因错误而崩溃:

.... because of Definition has no children on Throttle[{1} request per 3000 millis -> []]

在 scala 中使用油门的正确语法是什么?

【问题讨论】:

    标签: scala apache-camel throttling


    【解决方案1】:

    尝试将下一个“to”包装在油门块中,如下所示:

    """aws-sqs://123467890/test-queue?amazonSQSClient=%23awsSqsClient&amazonSQSEndpoint=https://sqs.eu-west-1.amazonaws.com""" ==> {
          setHeader("dlr_body", body)
          setHeader("msgid", "someid")
          throttle(1 per (3 seconds)) {
            to("sql:insert into camel_test (msgid, dlr_body) VALUES (:#msgid,:#dlr_body)?dataSource=dataSource")
          }
      }
    

    这是未经测试的,但我怀疑这是由于块语法的原因,您需要明确将最终的“to”作为节流阀的孩子。遗憾的是,我发现 camels scala dsl 对语句的顺序非常挑剔,但对实际编译的内容却非常松懈。

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 2021-08-23
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2022-08-11
      相关资源
      最近更新 更多