分享

storm的MessageID跟踪问题

caiyifeng 发表于 2014-12-28 15:47:45 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 26277
写了一个Topology,需要进行跟踪,请问有哪位大虾知道下面的问题:
我在spout 中 emit了一个消息,带有messageId的,如
emit(List<Object> tuple,Object messageId)
mit(new Values(source.getSourceUsername() + source.getSourceTableName(),records), cdcMsgId);

请问:  我在bolt 中能获取到messageId(cdcMsgId)吗?如何获取


拜谢了!!!

已有(6)人评论

跳转到指定楼层
desehawk 发表于 2014-12-28 16:56:16
获取它主要用来做什么?ack中可以轻易获取它
回复

使用道具 举报

muyannian 发表于 2014-12-28 17:22:40

this.collector.emit(tuple,msgId);
注:msgId是提供给Acker组件使用的,Acker组件使用msgId来跟踪Tuple树

在bolt中可以使用Acker方法。


如果想直接使用,恐怕不能。

回复

使用道具 举报

caiyifeng 发表于 2014-12-28 17:23:17
desehawk 发表于 2014-12-28 16:56
获取它主要用来做什么?ack中可以轻易获取它


是有ack(Object msgId) 这个是spout中的,是可以获取

在bolt中的executor怎么获取?,获取他是为了跟踪一些信息,调试用的
回复

使用道具 举报

tntzbzc 发表于 2014-12-28 17:46:16
caiyifeng 发表于 2014-12-28 17:23
是有ack(Object msgId) 这个是spout中的,是可以获取

在bolt中的executor怎么获取?,获取他是为了 ...

直接获取,目前还没有找到方法,只能间接获取了。
封装在tuple试试
回复

使用道具 举报

tntzbzc 发表于 2014-12-28 17:47:22
executor每执行完一次,要么调用ack,要么调用fail。看看能否转变下


回复

使用道具 举报

caiyifeng 发表于 2014-12-31 11:11:36
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条