如何在骆驼的所有路线上添加油门
@Component
public class MyRestRoute extends RouteBuilder {
@Value("${spring.application.name}")
private String appName;
@Value("${spring.application.description}")
private String description;
@Value("${spring.application.version}")
private String appVersion;
@Override
public void configure() throws Exception {
restConfiguration().apiContextRouteId("swagger").contextPath(System.getenv("CONTEXT_PATH"))
.apiContextPath("/swagger").component("servlet")
.apiProperty("api.title", appName)
.apiProperty("api.description", description)
.apiProperty("api.version", appVersion)
.apiProperty("host", "localhost")
.apiProperty("port", "8080")
.apiProperty("schemes", "http");
rest("/transfers/{transfer_id}")
.post().type(Request.class).id("id-limits").description("transfer").bindingMode(RestBindingMode.auto)
.skipBindingOnErrorCode(true)
.param().name("transfer_id").type(RestParamType.path).description("transferId").endParam()
.produces(MediaType.APPLICATION_JSON_VALUE)
.to("direct:transferRoute);
rest("/accounts")
.get().id("id-limits").description("Get Accounts").bindingMode(RestBindingMode.auto)
.skipBindingOnErrorCode(true)
.param().name("account_id").type(RestParamType.query).description("account_id").endParam()
.param().name("document").type(RestParamType.query).description("document").endParam()
.produces(MediaType.APPLICATION_JSON_VALUE)
.to("direct:accountsRoute));
}
}
那可以得到不止一个Restresource_path,我怎么能在我的所有主要路线中插入油门。我知道我可以在.from(“直接:转移路由”)和.from(“直接:帐户路由”)中的每个路由的开始之后插入,但我想一般地插入我的所有资源。我可以在骆驼身上做到这一点,或者也许使用Spring更安全?
也许你可以使用拦截器 https://camel.apache.org/components/3.17.x/eips/intercept.html#_using_intercept
interceptFrom().throttle(...);
据我所知,我认为在全球范围内这样做是不可能的。恐怕你得按每条路线来做。
作为一种(相当愚蠢的)变通方法,你可以想象这样的事情。
public abstract class CustomRouteBuilder extends RouteBuilder {
public RouteDefinition fromWithTrottle(String uri) {
return this.fromWithTrottle(uri, 3, 10000); // default throttling
}
public RouteDefinition fromWithTrottle(String uri, int count, long period) {
return super.from(uri)
.throttle(count)
.timePeriodMillis(period);
}
public class MyRestRoute extends CustomRouteBuilder {
@Override
public void configure() throws Exception {
fromWithTrottle("direct:transferRoute")
.to("mock:transfer");
fromWithTrottle("direct:accountsRoute", 2, 12_000)
.to("mock:accounts")
}
}
Apache Camel:2.12.2,activemq:5.7 我们注意到,在下面的路由中,对于前100次交换,节流工作正常。此后,它不是每秒发送100次交换,而是每秒仅发送1次交换。现在,如果我们将timePeriodMillis设置为100,它似乎可以正常工作。注意,我们同时发送500个交换。
我正在尝试向异步路由发送消息,但它不起作用。我刚刚在github上创建了一个项目来模拟这个问题
我正在使用apache camel cxf开发一个Web服务(肥皂),我遇到了这个错误。 Java . lang . illegalargumentexception:Part { http://blue print . camel . ngt . TN/}返回的类型应为[ltn . ngt . camel . blue print . WB _ subscriptions;,而不是org . A
我当前有一个配置有以下线程池的JMSListener: 我正在监听的队列有超过100条消息,当我启动侦听器时,它将处理前10条消息,没有任何问题,然后我将为其余的消息获得TaskRejectedException异常。 我的意图是,如果没有可用的线程来处理消息,@JMSListener不应该拉出任何新消息。有没有人知道这个配置是不是可以?我使用的是SpringBoot的1.5.3版本。
我有一个restendpoint示例。org,返回表单的json响应 我的路线是这样的 我读过关于轮询消费者的内容,但找不到如何继续轮询endpoint的示例,直到它返回“success”响应。 是否应该使用轮询消费者?如果是这样的话,可以举一个与我的案例相关的例子。用于轮询restendpoint的任何其他资源都非常有用。
问题内容: 我正在寻找JS中的简单节流阀。我知道像lodash和underscore这样的库都有它,但是仅对一个函数来说,包含其中任何一个库都是过大的。 我也在检查jquery是否具有类似的功能-找不到。 我发现一个工作的节流阀,这是代码: 问题是:在油门时间结束后,它将再次触发该功能。因此,假设我制作了一个在按键时每10秒触发一次的油门如果我按键2次,则在完成10秒后仍会触发第二次按键。我不要这