Receiver和ReceiverImpl 详解

ReceiverReceiverImpl 详解

 

Receiver ReceiverImpl的功能:它们是s4传输层到应用层的入口,首先将在传输层的EventByteBuffer message)反序列化生成Stream能够识别的Event,然后该Event添加到相应的Stream中。

ReceiverImpl 实现了Receiver接口的两个方法:

(1)Void receive (ByteBuffer message) ();

(2)int getPartitionId ();

由于方法(2)是调用底层的listener getPartitionId()方法得到,这里我们暂时不详细论述,之后讲述ListenerTCPListenerUDPListener)时再详细说明。

这里,我们主要论述方法(1),以及ReceiverImplstream的交互原理。

ReceiverImpl 维护一个Map<StreamName, Stream> map,通过addStream(Stream<? extends Event> stream)map中添加streamaddStream 方法会在Streamstart()方法被调用,那么该Stream则被保存在map中。

receive (ByteBuffer message)()中,先将收到的message反序列化生成Event,然后获得该Event对应的StreamStreamName,从而在map中找到该Event所要到达的Stream,并调用该StreamreceiveEventEvent event)方法以获取该event。接下来,该Stream会调用目标PEProcessingElement)的HandleInputEvent(Event event)方法,使得该event被相应的PE处理。总的来说,流程如下:

扫描二维码关注公众号,回复: 697252 查看本文章



 

猜你喜欢

转载自ziqiang-1984.iteye.com/blog/1941185