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
可以debug到這裏看下(這是我emit的數據,tuple.get(groupFieldIndex.get(0)) 拿到的就是(your data))
所以網上很多說fieldsGrouping能是相同的值路由到同一個task,前提是一定要保證你emit出來的數據value.hashcode相同