我有一个风暴应用程序,其中我有1个喷口和5个螺栓。拓扑工作正常。但是我在30分钟后出现$.ajax({
url: 'https://login.live.com/oauth20_authorize.srf?client_id=*********&scope=onedrive.readwrite&response_type=token&redirect_uri=http://localhost:54540/Home/Dashboard',
dataType: "json",
type: "GET",
contentType: 'application/json; charset=utf-8',
async: true,
processData: false,
cache: false,
success: function(data) {
alert(data);
},
error: function(xhr) {
alert('error');
}
});
错误。在第一个螺栓到第二个螺栓中,由于某些分析条件,仅处理20%的数据。丢弃了80%的数据。我认为这个错误是由于丢弃80%的数据或其他任何原因造成的。我不知道原因是什么以及如何解决它。
答案 0 :(得分:3)
如果您在Storm中使用容错(即,将消息ID分配给您的喷口中的元组),则需要使用消耗喷口的螺栓中的ack
所有元组&#39输出。即使你因为过滤条件而丢弃一些元组,因为"丢弃一个元组"仍然意味着,这个元组是完全处理的,也就是说,你需要告诉Storm这个 - 否则,Storm认为出现了问题(由于超时)并且使元组失败。
KafkaSpouts自动分配消息ID。你只需要确认所有传入的元组:
void execute(Tuple input) {
if(input-is-forwarded) {
collector.emit(input, new Values(/* generate output tuple */);
}
// ack tuple (regardless if forwarded or discarded)
collector.ack(input);
}