【发布时间】: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