我们正在使用Storm与Kafka Spout.当我们失败消息时,我们想重播它们,但在某些情况下,错误的数据或代码错误会导致消息总是失败一个Bolt,所以我们将进入一个无限的重放周期.显然我们在找到错误时会修复错误,但希望我们的拓扑通常具有容错能力.在重放N次以上之后我们怎么能得到一个元组?
通过Kafka Spout的代码,我看到它被设计为使用指数退避计时器和PR状态的注释重试:
"喷口不会终止重试周期(我确信它不应该这样做,因为它不能报告关于中止请求的故障的上下文),它只处理延迟重试.拓扑中的螺栓是仍然期望最终调用ack()而不是fail()来停止循环."
我已经看到StackOverflow响应建议编写自定义喷口,但如果有一种推荐的方法在Bolt中执行此操作,我宁可不要卡住维护Kafka Spout内部的自定义补丁.
什么是在博尔特这样做的正确方法?我没有看到元组中的任何状态暴露了重播的次数.
在Ember.js中,未在控制器中处理的事件将路由器链向上传播到应用程序路由(有关详细信息,请参阅http://emberjs.com/guides/views/handling-events/).
有没有办法在控制器中定义一个事件处理程序,允许事件继续传播到路由器?
App.SampleController = Ember.ObjectController.extend({
myEvent: function(obj) {
this.set('aVariable', true);
}
});
App.ApplicationRoute = Ember.Route.extend({
events: {
myEvent: function(obj) {
this.transitionTo('something');
}
}
});
Run Code Online (Sandbox Code Playgroud)
是否有一种方法可以让CarsController中的myEvent处理程序设置其内部状态变量,同时也可以将链上的事件踢到应用程序路径?我知道这件事:
App.__container__.lookup('router:main').send('myEvent', obj);
Run Code Online (Sandbox Code Playgroud)
但它使用了Ember内部.我希望有更标准的方法来做到这一点.
我正在使用JerseyTest v2.5和Grizzly容器编写测试.我的资源依赖于我的web.xml中定义的过滤器,因此测试失败.
有没有办法在使用JerseyTest时配置servlet过滤器?
更好的是,有没有办法使用我的web.xml配置servlet容器?
apache-kafka ×1
apache-storm ×1
controller ×1
ember.js ×1
events ×1
javascript ×1
jersey ×1
jersey-2.0 ×1
router ×1