基于Apache Camel中的响应有效负载大小拒绝限制

时间:2015-02-20 14:16:27

标签: apache-camel response throttling

我有一个要求,我们基于Camel的应用程序也可以获得巨大的有效载荷(50 + mb)响应。 我们需要一种拒绝这种巨大反应的方法。我找不到Camel中的内置功能来启用它。

此时,我正计划构建一个自定义节流器,因为我已经厌倦了在网上搜索提供此功能的外部自定义Camel组件。

在重新发明轮子之前,我想如果有人已经遇到过这种情况并且有一个可以与我共享的解决方案。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我认为如果您使用处理器来简单地获取有效负载的大小并将其设置在属性上,则可以将其用作路径中的过滤器。

Processer:

int payloadSize = exchange.getIn().getBody(byte[].class).length;
exchange.getIn().setHeader("payloadSize", payloadSize)

然后在你的路线中:

.filter(header("payloadSize").isLessThan(50 * 1024 * 1024))

答案 1 :(得分:0)

如果启用了流缓存,那么它有一个长度方法,您可以使用它来了解有效负载的大小,然后在消息大于X时拒绝该消息。

介意节流器EIP模式不拒绝消息,它只会减慢消息速度。要拒绝邮件,请使用基于内容的路由器,过滤器等

您还可以查看使用拦截器并使用from并检查大小,然后如果要拒绝它,请设置一些错误代码/错误正文,然后停止路由。