jstorm fieldsGrouping是如何找到下一个emit的task节点呢,如何保证相同的值路由要相同的task?

在spout和bolt发射数据的时候都会调用

collector.emit(new Values(your data), msgId);

如果指定了fieldsGrouping,那么jstorm会根据emit的数据(your data)计算下一个要发送的task,

com.alibaba.jstorm.task.group.MkFieldsGrouper

jstorm fieldsGrouping源码分析

可以debug到这里看下(这是我emit的数据,tuple.get(groupFieldIndex.get(0)) 拿到的就是(your data))

jstorm fieldsGrouping源码分析

所以网上很多说fieldsGrouping能是相同的值路由到同一个task,前提是一定要保证你emit出来的数据value.hashcode相同

相关文章:

  • 2021-12-31
  • 2022-01-15
  • 2021-08-14
  • 2021-07-03
  • 2021-06-19
  • 2021-04-12
  • 2021-05-20
  • 2021-09-10
猜你喜欢
  • 2021-11-14
  • 2021-11-20
  • 2021-08-25
  • 2021-08-11
  • 2022-02-13
  • 2021-10-15
  • 2021-12-27
相关资源
相似解决方案