g&Ebj#R`X&.fBQXf\_-c#k-79;($N#e;$^UIL6Q%]"85gqImp;Q^,\"W&guK\"/T/F`se]*u5uq_g9CoB+ sr2_@i]AV,*^INJWMN3Y5l\e#-!`aiTBrM-L:;+:*QA#_F0)Jfk>N+:*S'c278(GOF7sCY(2A"&T7H,9o-`fPpWT@BK^3*UMOiDsZ,]^:q `9YGcF\.1nE!)5ah)B0W:*D#R*cC?oA>Y\$h>R/+RNZC1cXc;5%i=G-q)7!o$*b`ciJ,Yl%5\^OFkK\eDqXrHI\IO9/*'&$B>2-j.JEoH3Q6?2SO)C9j]6 pKTqb):>.f)7f7>%MJfk>N+:*QA#_F0)Jfk>N+FI_OY$DeY(-?a.j>rCV_28sX>-qtJB[J$,"5sDBDr.!EF69>oS%&q26#%JL(+`9Z;40Xu51bA8%\0&ZTXj4/RDX.i#_F0mbaLBsAEE1Eb]P&9K7s[L6?CDC4e(b&&-P:d^`.fQ'efofgCXRf'n$#Y=We8p*C]? NE5V\VQ7[Dn~>endstream endobj 59 0 obj > >> /Rotate 0 /Trans > /Type /Page >> endobj 60 0 obj > /Rotate 0 /Trans > /Type /Page >> endobj 61 0 obj > /Rotate 0 /Trans > /Type /Page >> endobj 62 0 obj > endobj 63 0 obj > endobj 64 0 obj > endobj 65 0 obj > endobj 66 0 obj > endobj 67 0 obj > endobj 68 0 obj > endobj 69 0 obj > endobj 70 0 obj > endobj 71 0 obj > endobj 72 0 obj > endobj 73 0 obj > endobj 74 0 obj > endobj 75 0 obj > endobj 76 0 obj > endobj 77 0 obj > endobj 78 0 obj > endobj 79 0 obj > endobj 80 0 obj > endobj 81 0 obj > endobj 82 0 obj > endobj 83 0 obj > endobj 84 0 obj > endobj 85 0 obj > stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 775.0394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 30 re B* Q q .12549 .262745 .360784 rg BT 1 0 0 1 0 4 Tm /F2 20 Tf 24 TL 145.922 0 Td (Flume Developer Guide) Tj T* -145.922 0 Td ET Q Q q 1 0 0 1 40.01575 745.0394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 24 re B* Q q .12549 .262745 .360784 rg BT 1 0 0 1 0 3 Tm /F2 15 Tf 18 TL 212.1795 0 Td (version 1.2.0) Tj T* -212.1795 0 Td ET Q Q q 1 0 0 1 40.01575 650 cm Q q 1 0 0 1 40.01575 629.6 cm q 0 0 0 rg BT 1 0 0 1 0 2.4 Tm /F2 12 Tf 14.4 TL 216.612 0 Td (Apache Flume) Tj T* -216.612 0 Td ET Q Q q 1 0 0 1 40.01575 544.5606 cm Q q 1 0 0 1 40.01575 524.1606 cm q 0 0 0 rg BT 1 0 0 1 0 2.4 Tm /F2 12 Tf 14.4 TL 220.596 0 Td (July 23, 2012) Tj T* -220.596 0 Td ET Q Q q 1 0 0 1 40.01575 524.1606 cm Q q 1 0 0 1 40.01575 524.1606 cm Q endstream endobj 86 0 obj > stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 799.0394 cm Q endstream endobj 87 0 obj > stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 775.0394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 30 re B* Q q BT 1 0 0 1 0 4 Tm 24 TL /F2 20 Tf .12549 .262745 .360784 rg (Contents) Tj T* ET Q Q q 1 0 0 1 40.01575 427.0394 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 0 327 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Flume 1.2.0 Developer Guide) Tj T* ET Q Q q 1 0 0 1 443.2441 327 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 309 cm q BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Introduction) Tj T* ET Q Q q 1 0 0 1 443.2441 309 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 291 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Overview) Tj T* ET Q Q q 1 0 0 1 443.2441 291 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 273 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Architecture) Tj T* ET Q Q q 1 0 0 1 443.2441 273 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 255 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Data flow model) Tj T* ET Q Q q 1 0 0 1 443.2441 255 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 237 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Reliability) Tj T* ET Q Q q 1 0 0 1 443.2441 237 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 219 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Building Flume) Tj T* ET Q Q q 1 0 0 1 443.2441 219 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 201 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Getting the source) Tj T* ET Q Q q 1 0 0 1 443.2441 201 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 183 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Compile/test Flume) Tj T* ET Q Q q 1 0 0 1 443.2441 183 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 165 cm q BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Developing custom components) Tj T* ET Q Q q 1 0 0 1 443.2441 165 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 147 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Client) Tj T* ET Q Q q 1 0 0 1 443.2441 147 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 129 cm q BT 1 0 0 1 80 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Client SDK) Tj T* ET Q Q q 1 0 0 1 443.2441 129 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 111 cm q BT 1 0 0 1 80 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (RPC Client interface) Tj T* ET Q Q q 1 0 0 1 443.2441 111 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 93 cm q BT 1 0 0 1 80 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Avro RPC Client) Tj T* ET Q Q q 1 0 0 1 443.2441 93 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 75 cm q BT 1 0 0 1 80 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Failover handler) Tj T* ET Q Q q 1 0 0 1 443.2441 75 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 57 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Transaction interface) Tj T* ET Q Q q 1 0 0 1 443.2441 57 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 39 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Sink) Tj T* ET Q Q q 1 0 0 1 443.2441 39 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 21 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Source) Tj T* ET Q Q q 1 0 0 1 443.2441 21 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 3 cm q BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Channel) Tj T* ET Q Q q 1 0 0 1 443.2441 3 cm q 0 0 .501961 rg 0 0 .501961 RG BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET Q Q q Q Q q 1 0 0 1 40.01575 427.0394 cm Q q 1 0 0 1 40.01575 427.0394 cm Q endstream endobj 88 0 obj > stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 799.0394 cm Q endstream endobj 89 0 obj > stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 763.0394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 30 re B* Q q BT 1 0 0 1 0 4 Tm 24 TL /F2 20 Tf .12549 .262745 .360784 rg (Flume 1.2.0 Developer Guide) Tj T* ET Q Q q 1 0 0 1 40.01575 727.8394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 25.2 re B* Q q BT 1 0 0 1 0 3.2 Tm 19.2 TL /F2 16 Tf .12549 .262745 .360784 rg (Introduction) Tj T* ET Q Q q 1 0 0 1 40.01575 695.0394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 22.8 re B* Q q BT 1 0 0 1 0 2.8 Tm 16.8 TL /F3 14 Tf .12549 .262745 .360784 rg (Overview) Tj T* ET Q Q q 1 0 0 1 40.01575 665.0394 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .372273 Tw (Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregating and moving large) Tj T* 0 Tw (amounts of log data from many different sources to a centralized data store.) Tj T* ET Q Q q 1 0 0 1 40.01575 623.0394 cm q BT 1 0 0 1 0 26 Tm .463561 Tw 12 TL /F1 10 Tf 0 0 0 rg (Apache Flume is a top level project at the Apache Software Foundation. There are currently two release code lines) Tj T* 0 Tw 1.112006 Tw (available, versions 0.9.x and 1.x. This documentation applies to the 1.x codeline. Please click here for ) Tj 0 0 .501961 rg (the Flume) Tj T* 0 Tw (0.9.x Developer Guide) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 40.01575 590.2394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 22.8 re B* Q q BT 1 0 0 1 0 2.8 Tm 16.8 TL /F3 14 Tf .12549 .262745 .360784 rg (Architecture) Tj T* ET Q Q q 1 0 0 1 40.01575 559.8394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Data flow model) Tj T* ET Q Q q 1 0 0 1 40.01575 517.8394 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .252004 Tw (A unit of data flow is called event which is a byte payload that is accompanied by an optional set of string attributes.) Tj T* 0 Tw 2.008005 Tw (Flume agent is a process \(JVM\) that hosts the components that flows events from an external source to next) Tj T* 0 Tw (destination.) Tj T* ET Q Q q 1 0 0 1 40.01575 465.9994 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 202.902 3 cm q 109.44 0 0 45.84 0 0 cm /FormXob.rst2pdf_image_0 Do Q Q q Q Q q 1 0 0 1 40.01575 375.9994 cm q 0 0 0 rg BT 1 0 0 1 0 74 Tm /F1 10 Tf 12 TL .057705 Tw (A source consumes events delivered to it by an external source like web server in a specific format. For example, an) Tj T* 0 Tw .212576 Tw (Avro source can be used to receive Avro events from clients or other agents in the flow. When a source receives an) Tj T* 0 Tw .370195 Tw (event, it stores it into one or more channels. The channel is a passive store that keeps the event until its consumed) Tj T* 0 Tw .029163 Tw (by a sink. An example of channel is the JDBC channel that uses a file-system backed embedded database. The sink) Tj T* 0 Tw .213052 Tw (removes the event from channel and puts it into an external repository like HDFS or forwards it to the source in next) Tj T* 0 Tw 1.900215 Tw (hop of the flow. The source and sink within the given agent run asynchronously with the events staged in the) Tj T* 0 Tw (channel.) Tj T* ET Q Q q 1 0 0 1 40.01575 345.5994 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Reliability) Tj T* ET Q Q q 1 0 0 1 40.01575 243.5994 cm q 0 0 0 rg BT 1 0 0 1 0 86 Tm /F1 10 Tf 12 TL 2.454952 Tw (The events are staged in the channel on each agent. Then they are delivered to the next agent or terminal) Tj T* 0 Tw 1.961794 Tw (repository \(like HDFS\) in the flow. The events are removed from the channel only after they are stored in the) Tj T* 0 Tw 1.514672 Tw (channel of next agent or in the terminal repository. This is a how the single-hop message delivery semantics in) Tj T* 0 Tw .51815 Tw (Flume provide end-to-end reliability of the flowFlume uses transactional approach to guarantee the reliable delivery) Tj T* 0 Tw .770783 Tw (of the events. The sources and sinks encapsulate the store/retrieval of the events in a transaction provided by the) Tj T* 0 Tw .555186 Tw (channel. This ensures that the set of events are reliably passed from point to point in the flow. In case of multi hop) Tj T* 0 Tw .077338 Tw (flow, the sink on previous hop and source on next hop both have their transactions running to ensure that the data is) Tj T* 0 Tw (safely stored in the channel of the next hop.) Tj T* ET Q Q q 1 0 0 1 40.01575 210.7994 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 22.8 re B* Q q BT 1 0 0 1 0 2.8 Tm 16.8 TL /F3 14 Tf .12549 .262745 .360784 rg (Building Flume) Tj T* ET Q Q q 1 0 0 1 40.01575 180.3994 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Getting the source) Tj T* ET Q Q q 1 0 0 1 40.01575 162.3994 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Check out the code using Subversion. Click here for ) Tj 0 0 .501961 rg (the SVN repository root) Tj 0 0 0 rg (.) Tj T* ET Q Q q 1 0 0 1 40.01575 144.3994 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The Flume 1.x development happens under the branch "trunk" so this command line can be used:) Tj T* ET Q Q q 1 0 0 1 40.01575 125.5994 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 18 re B* Q q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F4 10 Tf 12 TL (svn checkout http://svn.apache.org/repos/asf/flume/trunk flume-trunk) Tj T* ET Q Q Q Q Q q 1 0 0 1 40.01575 105.5994 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Alternatively, if you prefer using Git, you may use:) Tj T* ET Q Q q 1 0 0 1 40.01575 62.79937 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 42 re B* Q q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F4 10 Tf 12 TL (git clone git://git.apache.org/flume.git) Tj T* (cd flume) Tj T* (git checkout trunk) Tj T* ET Q Q Q Q Q q 1 0 0 1 34.01575 807.2126 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Flume 1.2.0 Developer Guide) Tj T* ET Q Q q 1 0 0 1 34.01575 22.67717 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1) Tj T* ET Q Q endstream endobj 90 0 obj > stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 772.6394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Compile/test Flume) Tj T* ET Q Q q 1 0 0 1 40.01575 754.6394 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The Flume build is mavenized. You can compile Flume using the standard Maven commands:) Tj T* ET Q Q q 1 0 0 1 40.01575 748.6394 cm Q q 1 0 0 1 40.01575 748.6394 cm Q q 1 0 0 1 40.01575 736.6394 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (1.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Compile only: ) Tj /F4 10 Tf (mvn) Tj ( ) Tj (clean) Tj ( ) Tj (compile) Tj T* ET Q Q q Q Q q 1 0 0 1 40.01575 730.6394 cm Q q 1 0 0 1 40.01575 718.6394 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (2.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Compile and run unit tests: ) Tj /F4 10 Tf (mvn) Tj ( ) Tj (clean) Tj ( ) Tj (test) Tj T* ET Q Q q Q Q q 1 0 0 1 40.01575 712.6394 cm Q q 1 0 0 1 40.01575 700.6394 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (3.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Run individual test\(s\): ) Tj /F4 10 Tf (mvn) Tj ( ) Tj (clean) Tj ( ) Tj (test) Tj ( ) Tj (-Dtest=) Tj ( ) Tj (,) Tj ( ) Tj (. ) Tj ( ) Tj (-DfailIfNoTests=false) Tj T* ET Q Q q Q Q q 1 0 0 1 40.01575 694.6394 cm Q q 1 0 0 1 40.01575 682.6394 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (4.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Create tarball package: ) Tj /F4 10 Tf (mvn) Tj ( ) Tj (clean) Tj ( ) Tj (install) Tj T* ET Q Q q Q Q q 1 0 0 1 40.01575 676.6394 cm Q q 1 0 0 1 40.01575 664.6394 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 6 -3 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 5.66 0 Td (5.) Tj T* -5.66 0 Td ET Q Q q 1 0 0 1 23 -3 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Create tarball package \(skip unit tests\): ) Tj /F4 10 Tf (mvn) Tj ( ) Tj (clean) Tj ( ) Tj (install) Tj ( ) Tj (-DskipTests) Tj T* ET Q Q q Q Q q 1 0 0 1 40.01575 664.6394 cm Q q 1 0 0 1 40.01575 631.8394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 22.8 re B* Q q BT 1 0 0 1 0 2.8 Tm 16.8 TL /F3 14 Tf .12549 .262745 .360784 rg (Developing custom components) Tj T* ET Q Q q 1 0 0 1 40.01575 601.4394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Client) Tj T* ET Q Q q 1 0 0 1 40.01575 547.4394 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .750205 Tw (The client operates at the point of origin of events and delivers them to a Flume agent. Clients typically operate in) Tj T* 0 Tw .327888 Tw (the process space of the application they are consuming data from. Currently flume supports Avro, log4j and syslog) Tj T* 0 Tw .526531 Tw (as ways to transfer data from remote source. Additionally there\222s an Exec source that can consume the output of a) Tj T* 0 Tw (local process as input to Flume.) Tj T* ET Q Q q 1 0 0 1 40.01575 469.4394 cm q 0 0 0 rg BT 1 0 0 1 0 62 Tm /F1 10 Tf 12 TL .97829 Tw (It\222s quite possible to have a use case where these existing options are not sufficient. In this case you can build a) Tj T* 0 Tw .808205 Tw (custom mechanism to send data to Flume. There are two ways of achieving this. First is to create a custom client) Tj T* 0 Tw .264952 Tw (that communicates to one of the flume\222s existing sources like Avro or syslog. Here the client should convert it\222s data) Tj T* 0 Tw .279672 Tw (into messages understood by these Flume sources. The other option is to write a custom Flume source that directly) Tj T* 0 Tw 1.699116 Tw (talks to your existing client application using some IPC or RPC protocols, and then convert the data into flume) Tj T* 0 Tw (events to send it upstream.) Tj T* ET Q Q q 1 0 0 1 40.01575 440.2394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 19.2 re B* Q q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F3 11 Tf .12549 .262745 .360784 rg (Client SDK) Tj T* ET Q Q q 1 0 0 1 40.01575 398.2394 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .555783 Tw (Though flume contains a number of built in mechanisms to ingest data, often one wants the ability to communicate) Tj T* 0 Tw 1.299116 Tw (with flume directly from a custom application. The Client SDK is a library that enables applications to connect to) Tj T* 0 Tw (Flume and send data into Flume\222s data flow over RPC.) Tj T* ET Q Q q 1 0 0 1 40.01575 369.0394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 19.2 re B* Q q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F3 11 Tf .12549 .262745 .360784 rg (RPC Client interface) Tj T* ET Q Q q 1 0 0 1 40.01575 327.0394 cm q BT 1 0 0 1 0 26 Tm 1.483052 Tw 12 TL /F1 10 Tf 0 0 0 rg (The is an interface to wrap the user data data and attributes into an ) Tj /F4 10 Tf (Event) Tj /F1 10 Tf (, which is Flume\222s unit of flow. This) Tj T* 0 Tw 4.913392 Tw (encapsulates the RPC mechanism supported by Flume. The application can simply call ) Tj /F4 10 Tf (append\(\) ) Tj /F1 10 Tf (or) Tj T* 0 Tw /F4 10 Tf (appendBatch\(\) ) Tj /F1 10 Tf (to send data and not worry about the underlying message exchanges.) Tj T* ET Q Q q 1 0 0 1 40.01575 297.8394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 19.2 re B* Q q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F3 11 Tf .12549 .262745 .360784 rg (Avro RPC Client) Tj T* ET Q Q q 1 0 0 1 40.01575 255.8394 cm q BT 1 0 0 1 0 26 Tm 4.086721 Tw 12 TL /F1 10 Tf 0 0 0 rg (As of Flume 1.1.0, Avro is the only support RPC protocol. The ) Tj /F4 10 Tf (NettyAvroRpcClient ) Tj /F1 10 Tf (implements the) Tj T* 0 Tw .470671 Tw /F4 10 Tf (RpcClient ) Tj /F1 10 Tf (interface. The client needs to create this object with the host and port of the Flume agent and use it to) Tj T* 0 Tw (send data into flume. The following example shows how to use the Client SDK API:) Tj T* ET Q Q q 1 0 0 1 40.01575 57.03937 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 198 re B* Q q BT 1 0 0 1 0 182 Tm 12 TL /F5 10 Tf 0 .501961 0 rg (import) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .054902 .517647 .709804 rg (org.apache.flume.Event) Tj /F4 10 Tf .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* /F5 10 Tf 0 .501961 0 rg (import) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .054902 .517647 .709804 rg (org.apache.flume.EventDeliveryException) Tj /F4 10 Tf .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* /F5 10 Tf 0 .501961 0 rg (import) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .054902 .517647 .709804 rg (org.apache.flume.FlumeException) Tj /F4 10 Tf .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* /F5 10 Tf 0 .501961 0 rg (import) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .054902 .517647 .709804 rg (org.apache.flume.api.RpcClient) Tj /F4 10 Tf .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* /F5 10 Tf 0 .501961 0 rg (import) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .054902 .517647 .709804 rg (org.apache.flume.api.RpcClientFactory) Tj /F4 10 Tf .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* /F5 10 Tf 0 .501961 0 rg (import) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .054902 .517647 .709804 rg (org.apache.flume.event.EventBuilder) Tj /F4 10 Tf .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* T* /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (myInit) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (\(\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// setup the RPC connection to Flume agent at hostname/port) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj (RpcClient) Tj ( ) Tj (rpcClient) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (RpcClientFactory) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (getDefaultInstance) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (hostname) Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (port) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (. ) Tj 0 0 0 rg T* .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* T* /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (sendDataToFlume) Tj /F4 10 Tf .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (String) Tj ( ) Tj (data) Tj .188235 .188235 .188235 rg (\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg ( <) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// Create flume event object) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj (Event) Tj ( ) Tj (event) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (EventBuilder) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (withBody) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (data) Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (Charset) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (forName) Tj .188235 .188235 .188235 rg (\() Tj .729412 .129412 .129412 rg ("UTF-8") Tj .188235 .188235 .188235 rg (\)\);) Tj 0 0 0 rg T* ET Q Q Q Q Q q 1 0 0 1 34.01575 807.2126 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Flume 1.2.0 Developer Guide) Tj T* ET Q Q q 1 0 0 1 34.01575 22.67717 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2) Tj T* ET Q Q endstream endobj 91 0 obj >stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 588.2394 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 198 re B* Q q BT 1 0 0 1 0 182 Tm 12 TL /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (try) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (rpcClient) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (append) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (event) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (catch) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (EventDeliveryException) Tj ( ) Tj (e) Tj .188235 .188235 .188235 rg (\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// clean up and recreate rpcClient) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj (rpcClient) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (close) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj (rpcClient) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (null) Tj /F4 10 Tf .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* ( ) Tj (rpcClient) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (RpcClientFactory) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (getDefaultInstance) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (hostname) Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (port) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (. ) Tj 0 0 0 rg T* .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* T* /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (cleanUp) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (\(\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// close the rpc connection) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj (rpcClient) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (close) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (. ) Tj 0 0 0 rg T* .188235 .188235 .188235 rg (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 40.01575 559.0394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 19.2 re B* Q q BT 1 0 0 1 0 2.2 Tm 13.2 TL /F3 11 Tf .12549 .262745 .360784 rg (Failover handler) Tj T* ET Q Q q 1 0 0 1 40.01575 517.0394 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL .529163 Tw (This class wraps the Avro RPC client to provide failover handling capability to clients. This takes a list of host/ports) Tj T* 0 Tw .166705 Tw (of the Flume agent. If there\222s an error in communicating the current agent, then it automatically falls back to the next) Tj T* 0 Tw (agent in the list:) Tj T* ET Q Q q 1 0 0 1 40.01575 330.2394 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 186 re B* Q q BT 1 0 0 1 0 170 Tm 12 TL /F6 10 Tf .501961 .501961 .501961 rg (// Setup properties for the failover) Tj T* /F4 10 Tf 0 0 0 rg (Properties) Tj ( ) Tj (props) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (new) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (Properties) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* (props) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (put) Tj .188235 .188235 .188235 rg (\() Tj .729412 .129412 .129412 rg ("client.type") Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ("default_failover") Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* T* /F6 10 Tf .501961 .501961 .501961 rg (// list of hosts) Tj T* /F4 10 Tf 0 0 0 rg (props) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (put) Tj .188235 .188235 .188235 rg (\() Tj .729412 .129412 .129412 rg ("hosts") Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ("host1 host2 host3") Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* T* /F6 10 Tf .501961 .501961 .501961 rg (// address/port pair for each host) Tj T* /F4 10 Tf 0 0 0 rg (props) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (put) Tj .188235 .188235 .188235 rg (\() Tj .729412 .129412 .129412 rg ("hosts.host1") Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (host1) Tj ( ) Tj .188235 .188235 .188235 rg (+) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (":") Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (+) Tj 0 0 0 rg ( ) Tj (port1) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* (props) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (put) Tj .188235 .188235 .188235 rg (\() Tj .729412 .129412 .129412 rg ("hosts.host1") Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (host2) Tj ( ) Tj .188235 .188235 .188235 rg (+) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (":") Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (+) Tj 0 0 0 rg ( ) Tj (port2) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* (props) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (put) Tj .188235 .188235 .188235 rg (\() Tj .729412 .129412 .129412 rg ("hosts.host1") Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (host3) Tj ( ) Tj .188235 .188235 .188235 rg (+) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (":") Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (+) Tj 0 0 0 rg ( ) Tj (port3) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* T* /F6 10 Tf .501961 .501961 .501961 rg (// create the client with failover properties) Tj T* /F4 10 Tf 0 0 0 rg (client) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (FailoverRpcClient) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* (RpcClientFactory) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (getInstance) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (props) Tj .188235 .188235 .188235 rg (\);) Tj T* ET Q Q Q Q Q q 1 0 0 1 40.01575 299.8394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Transaction interface) Tj T* ET Q Q q 1 0 0 1 40.01575 269.8394 cm q BT 1 0 0 1 0 14 Tm .998476 Tw 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F4 10 Tf (Transaction ) Tj /F1 10 Tf (interface is the basis of reliability for Flume. All the major components ie. sources, sinks and) Tj T* 0 Tw (channels needs to interface with Flume transaction.) Tj T* ET Q Q q 1 0 0 1 34.01575 807.2126 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Flume 1.2.0 Developer Guide) Tj T* ET Q Q q 1 0 0 1 34.01575 22.67717 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (3) Tj T* ET Q Q endstream endobj 92 0 obj > stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 548.8041 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q 1 0 0 1 81.15146 3 cm q 352.9412 0 0 232.2353 0 0 cm /FormXob.rst2pdf_image_1 Do Q Q q Q Q q 1 0 0 1 40.01575 494.8041 cm q 0 0 0 rg BT 1 0 0 1 0 38 Tm /F1 10 Tf 12 TL .778273 Tw (The transaction interface is implemented by a channel implementation. The source and sink connected to channel) Tj T* 0 Tw .85094 Tw (obtain a transaction object. The sources actually use a channel selector interface that encapsulate the transaction) Tj T* 0 Tw .926894 Tw (\(discussed in later sections\). The operations to stage or extract an event is done inside an active transaction. For) Tj T* 0 Tw (example:) Tj T* ET Q Q q 1 0 0 1 40.01575 320.0041 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 174 re B* Q q BT 1 0 0 1 0 158 Tm 12 TL /F4 10 Tf 0 0 0 rg (Channel) Tj ( ) Tj (ch) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (. ) Tj 0 0 0 rg T* (Transaction) Tj ( ) Tj (tx) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (ch) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (getTransaction) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* /F5 10 Tf 0 .501961 0 rg (try) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (tx) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (begin) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (. ) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// ch.put\(event\) or ch.take\(\)) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (. ) Tj 0 0 0 rg T* ( ) Tj (tx) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (commit) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* .188235 .188235 .188235 rg (>) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (catch) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (ChannelException) Tj ( ) Tj (ex) Tj .188235 .188235 .188235 rg (\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (tx) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (rollback) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (. ) Tj 0 0 0 rg T* .188235 .188235 .188235 rg (>) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (finally) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (tx) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (close) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* .188235 .188235 .188235 rg (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 40.01575 288.0041 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .048822 Tw (Here we get hold of a transaction from a channel. After the begin method is executed, the event is put in the channel) Tj T* 0 Tw (and transaction is committed.) Tj T* ET Q Q q 1 0 0 1 40.01575 257.6041 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Sink) Tj T* ET Q Q q 1 0 0 1 40.01575 155.6041 cm q BT 1 0 0 1 0 86 Tm .624337 Tw 12 TL /F1 10 Tf 0 0 0 rg (The purpose of a sink to extract events from the channel and forward it to the next Agent in the flow or store in an) Tj T* 0 Tw .293373 Tw (external repository. A sink is linked to a channel instance as per the flow configuration. There\222s a sink runner thread) Tj T* 0 Tw 2.399006 Tw (that\222s get created for every configured sink which manages the sink\222s lifecycle. The sink needs to implement) Tj T* 0 Tw 1.13315 Tw /F4 10 Tf (start\(\) ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (stop\(\) ) Tj /F1 10 Tf (methods that are part of the ) Tj /F4 10 Tf (LifecycleAware ) Tj /F1 10 Tf (interface. The ) Tj /F4 10 Tf (start\(\) ) Tj /F1 10 Tf (method should) Tj T* 0 Tw 1.251705 Tw (initialize the sink and bring it to a state where it can forward the events to its next destination. The ) Tj /F4 10 Tf (process\(\)) Tj T* 0 Tw .262006 Tw /F1 10 Tf (method from the ) Tj /F4 10 Tf (Sink ) Tj /F1 10 Tf (interface should do the core processing of extracting the event from channel and forwarding) Tj T* 0 Tw 1.219006 Tw (it. The ) Tj /F4 10 Tf (stop\(\) ) Tj /F1 10 Tf (method should do the necessary cleanup. The sink also needs to implement a ) Tj /F4 10 Tf (Configurable) Tj T* 0 Tw /F1 10 Tf (interface for processing its own configuration settings:) Tj T* ET Q Q q 1 0 0 1 40.01575 64.80408 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 90 re B* Q q BT 1 0 0 1 0 74 Tm 12 TL /F6 10 Tf .501961 .501961 .501961 rg (// foo sink) Tj T* /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (class) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .690196 0 .376471 rg (FooSink) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (extends) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (AbstractSink) Tj ( ) Tj /F5 10 Tf 0 .501961 0 rg (implements) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (Configurable) Tj ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf .313725 .313725 .313725 rg (@Override) Tj /F4 10 Tf 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (configure) Tj /F4 10 Tf .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (Context) Tj ( ) Tj (context) Tj .188235 .188235 .188235 rg (\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (some_Param) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (context) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (get) Tj .188235 .188235 .188235 rg (\() Tj .729412 .129412 .129412 rg ("some_param") Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (String) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (class) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// process some_param \205) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ET Q Q Q Q Q q 1 0 0 1 34.01575 807.2126 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Flume 1.2.0 Developer Guide) Tj T* ET Q Q q 1 0 0 1 34.01575 22.67717 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (4) Tj T* ET Q Q endstream endobj 93 0 obj > stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 420.2394 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 366 re B* Q q BT 1 0 0 1 0 350 Tm 12 TL /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .313725 .313725 .313725 rg (@Override) Tj /F4 10 Tf 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (start) Tj /F4 10 Tf .188235 .188235 .188235 rg (\(\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// initialize the connection to foo repository ..) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf .313725 .313725 .313725 rg (@Override) Tj /F4 10 Tf 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (stop) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (\(\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// cleanup and disconnect from foo repository ..) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf .313725 .313725 .313725 rg (@Override) Tj /F4 10 Tf 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (Status) Tj ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (process) Tj /F4 10 Tf .188235 .188235 .188235 rg (\(\)) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (throws) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (EventDeliveryException) Tj ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// Start transaction) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj (ch) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (getChannel) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj (tx) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (ch) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (getTransaction) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (try) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (tx) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (begin) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj (Event) Tj ( ) Tj (e) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (ch) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (take) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// send the event to foo) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// foo.some_operation\(e\);) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj (tx) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (commit) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj (sgtatus) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (Status) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (READY) Tj .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (ChannelException) Tj ( ) Tj (e) Tj .188235 .188235 .188235 rg (\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (tx) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (rollback) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj (status) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (Status) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (BACKOFF) Tj .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (finally) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (tx) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (close) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (return) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (status) Tj .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* .188235 .188235 .188235 rg (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 40.01575 389.8394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Source) Tj T* ET Q Q q 1 0 0 1 40.01575 299.8394 cm q BT 1 0 0 1 0 74 Tm .422576 Tw 12 TL /F1 10 Tf 0 0 0 rg (The purpose of a Source is to receive data from an external client and store it in the channel. As mentioned above,) Tj T* 0 Tw 2.343675 Tw (for sources the ) Tj /F4 10 Tf (Transaction ) Tj /F1 10 Tf (interface is encapsulated by the ) Tj /F4 10 Tf (ChannelSelector) Tj /F1 10 Tf (. Similar to ) Tj /F4 10 Tf (SinkRunner) Tj /F1 10 Tf (,) Tj T* 0 Tw .358273 Tw (there\222s a ) Tj /F4 10 Tf (SourceRunner ) Tj /F1 10 Tf (thread that gets created for every configured source that manages the source\222s lifecycle.) Tj T* 0 Tw .412273 Tw (The source needs to implement ) Tj /F4 10 Tf (start\(\) ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (stop\(\) ) Tj /F1 10 Tf (methods that are part of the ) Tj /F4 10 Tf (LifecycleAware ) Tj /F1 10 Tf (interface.) Tj T* 0 Tw 3.022756 Tw (There are two types of sources, pollable and event-driven. The runner of pollable source runner invokes a) Tj T* 0 Tw .879064 Tw /F4 10 Tf (process\(\) ) Tj /F1 10 Tf (method from the pollable source. The ) Tj /F4 10 Tf (process\(\) ) Tj /F1 10 Tf (method should check for new data and store it in) Tj T* 0 Tw (the channel. The event driver source needs have its own callback mechanism that captures the new data:) Tj T* ET Q Q q 1 0 0 1 40.01575 65.03937 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 538 234 re B* Q q BT 1 0 0 1 0 218 Tm 12 TL /F6 10 Tf .501961 .501961 .501961 rg (// bar source) Tj T* /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (class) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .690196 0 .376471 rg (BarSource) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (extends) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (AbstractSource) Tj ( ) Tj /F5 10 Tf 0 .501961 0 rg (implements) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (Configurable) Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (EventDrivenSource) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf .313725 .313725 .313725 rg (@Override) Tj /F4 10 Tf 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (configure) Tj /F4 10 Tf .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (Context) Tj ( ) Tj (context) Tj .188235 .188235 .188235 rg (\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj (some_Param) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (context) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (get) Tj .188235 .188235 .188235 rg (\() Tj .729412 .129412 .129412 rg ("some_param") Tj .188235 .188235 .188235 rg (,) Tj 0 0 0 rg ( ) Tj (String) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (class) Tj .188235 .188235 .188235 rg (\);) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// process some_param \205) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf .313725 .313725 .313725 rg (@Override) Tj /F4 10 Tf 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (start) Tj /F4 10 Tf .188235 .188235 .188235 rg (\(\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// initialize the connection to bar client ..) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf .313725 .313725 .313725 rg (@Override) Tj /F4 10 Tf 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf .188235 .188235 .564706 rg (void) Tj /F4 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (stop) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (\(\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// cleanup and disconnect from bar client ..) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf .313725 .313725 .313725 rg (@Override) Tj /F4 10 Tf 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (public) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (Status) Tj ( ) Tj /F5 10 Tf 0 .376471 .690196 rg (process) Tj /F4 10 Tf .188235 .188235 .188235 rg (\(\)) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (throws) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (EventDeliveryException) Tj ( ) Tj .188235 .188235 .188235 rg ( <) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (try) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// receive new data) Tj T* ET Q Q Q Q Q q 1 0 0 1 34.01575 807.2126 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Flume 1.2.0 Developer Guide) Tj T* ET Q Q q 1 0 0 1 34.01575 22.67717 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (5) Tj T* ET Q Q endstream endobj 94 0 obj >stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 40.01575 672.2394 cm q q q 1 0 0 1 4.4 .4 cm q .666667 .8 .6 RG .3 w .933333 1 .8 rg n -4 0 514.4441 114 re B* Q q BT 1 0 0 1 0 98 Tm 12 TL /F4 10 Tf 0 0 0 rg ( ) Tj (Event) Tj ( ) Tj (e) Tj ( ) Tj .188235 .188235 .188235 rg (=) Tj 0 0 0 rg ( ) Tj (get_some_data) Tj .188235 .188235 .188235 rg (\(\);) Tj 0 0 0 rg T* ( ) Tj /F6 10 Tf .501961 .501961 .501961 rg (// store the event to underlying channels\(s\)) Tj T* /F4 10 Tf 0 0 0 rg ( ) Tj (getChannelProcessor) Tj .188235 .188235 .188235 rg (\(\).) Tj 0 0 .752941 rg (processEvent) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (e) Tj .188235 .188235 .188235 rg (\)) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (catch) Tj /F4 10 Tf 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (\() Tj 0 0 0 rg (ChannelException) Tj ( ) Tj (ex) Tj .188235 .188235 .188235 rg (\)) Tj 0 0 0 rg ( ) Tj .188235 .188235 .188235 rg (<) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (return) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (Status) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (BACKOFF) Tj .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (return) Tj /F4 10 Tf 0 0 0 rg ( ) Tj (Status) Tj .188235 .188235 .188235 rg (.) Tj 0 0 .752941 rg (READY) Tj .188235 .188235 .188235 rg (;) Tj 0 0 0 rg T* ( ) Tj .188235 .188235 .188235 rg (>) Tj 0 0 0 rg T* .188235 .188235 .188235 rg (>) Tj T* ET Q Q Q Q Q q 1 0 0 1 40.01575 641.8394 cm q .8 .8 .8 RG .3 w .94902 .94902 .94902 rg n -10 0 525.2441 20.4 re B* Q q BT 1 0 0 1 0 2.4 Tm 14.4 TL /F3 12 Tf .12549 .262745 .360784 rg (Channel) Tj T* ET Q Q q 1 0 0 1 40.01575 623.8394 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (TBD) Tj T* ET Q Q q 1 0 0 1 40.01575 623.8394 cm Q q 1 0 0 1 34.01575 807.2126 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Flume 1.2.0 Developer Guide) Tj T* ET Q Q q 1 0 0 1 34.01575 22.67717 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (6) Tj T* ET Q Q endstream endobj 95 0 obj > endobj 96 0 obj > endobj 97 0 obj > endobj 98 0 obj > endobj 99 0 obj > endobj 100 0 obj > endobj 101 0 obj > endobj 102 0 obj > endobj 103 0 obj > endobj 104 0 obj > endobj 105 0 obj > endobj xref 0 106 0000000000 65535 f 0000000075 00000 n 0000000173 00000 n 0000000291 00000 n 0000000414 00000 n 0000000647 00000 n 0000000880 00000 n 0000001079 00000 n 0000001278 00000 n 0000001477 00000 n 0000001676 00000 n 0000001876 00000 n 0000002076 00000 n 0000002276 00000 n 0000002476 00000 n 0000002676 00000 n 0000002876 00000 n 0000003076 00000 n 0000003276 00000 n 0000003476 00000 n 0000003676 00000 n 0000003876 00000 n 0000004076 00000 n 0000004276 00000 n 0000004476 00000 n 0000004676 00000 n 0000004876 00000 n 0000005076 00000 n 0000005276 00000 n 0000005476 00000 n 0000005676 00000 n 0000005876 00000 n 0000006076 00000 n 0000006276 00000 n 0000006476 00000 n 0000006676 00000 n 0000006876 00000 n 0000007076 00000 n 0000007276 00000 n 0000007476 00000 n 0000007676 00000 n 0000007876 00000 n 0000008076 00000 n 0000008276 00000 n 0000008476 00000 n 0000009060 00000 n 0000009294 00000 n 0000009425 00000 n 0000009658 00000 n 0000009891 00000 n 0000019719 00000 n 0000025131 00000 n 0000025347 00000 n 0000025464 00000 n 0000025786 00000 n 0000025908 00000 n 0000026033 00000 n 0000026267 00000 n 0000026501 00000 n 0000050169 00000 n 0000050452 00000 n 0000050686 00000 n 0000050920 00000 n 0000051037 00000 n 0000051256 00000 n 0000051340 00000 n 0000051514 00000 n 0000051673 00000 n 0000051800 00000 n 0000051988 00000 n 0000052122 00000 n 0000052252 00000 n 0000052442 00000 n 0000052579 00000 n 0000052716 00000 n 0000052905 00000 n 0000053072 00000 n 0000053201 00000 n 0000053355 00000 n 0000053504 00000 n 0000053639 00000 n 0000053794 00000 n 0000053932 00000 n 0000054072 00000 n 0000054198 00000 n 0000054346 00000 n 0000055343 00000 n 0000055478 00000 n 0000060606 00000 n 0000060741 00000 n 0000067251 00000 n 0000077277 00000 n 0000084204 00000 n 0000090682 00000 n 0000100365 00000 n 0000102568 00000 n 0000102737 00000 n 0000102776 00000 n 0000102815 00000 n 0000102854 00000 n 0000102893 00000 n 0000102933 00000 n 0000102973 00000 n 0000103013 00000 n 0000103053 00000 n 0000103093 00000 n trailer > startxref 103133 %%EOF %PDF-1.4 %���� ReportLab Generated PDF document http://www.reportlab.com 1 0 obj > endobj 2 0 obj > endobj 3 0 obj > endobj 4 0 obj > /Rotate 0 /Trans > /Type /Page >> endobj 5 0 obj > /Rotate 0 /Trans > /Type /Page >> endobj 6 0 obj > endobj 7 0 obj > endobj 8 0 obj > endobj 9 0 obj > endobj 10 0 obj > endobj 11 0 obj > endobj 12 0 obj > endobj 13 0 obj > endobj 14 0 obj > endobj 15 0 obj > endobj 16 0 obj > endobj 17 0 obj > endobj 18 0 obj > endobj 19 0 obj > endobj 20 0 obj > endobj 21 0 obj > endobj 22 0 obj > endobj 23 0 obj > endobj 24 0 obj > endobj 25 0 obj > endobj 26 0 obj > endobj 27 0 obj > endobj 28 0 obj > endobj 29 0 obj > endobj 30 0 obj > endobj 31 0 obj > endobj 32 0 obj > endobj 33 0 obj > endobj 34 0 obj > endobj 35 0 obj > endobj 36 0 obj > endobj 37 0 obj > endobj 38 0 obj > endobj 39 0 obj > endobj 40 0 obj > endobj 41 0 obj > endobj 42 0 obj > endobj 43 0 obj > endobj 44 0 obj > /Rotate 0 /Trans > /Type /Page >> endobj 45 0 obj > /Rotate 0 /Trans > /Type /Page >> endobj 46 0 obj > endobj 47 0 obj > /Border [ 0 0 0 ] /Rect [ 509.6878 635.7894 554.1478 647.7894 ] /Subtype /Link /Type /Annot >> endobj 48 0 obj > /Border [ 0 0 0 ] /Rect [ 40.01575 623.7894 139.5057 635.7894 ] /Subtype /Link /Type /Annot >> endobj 49 0 obj > stream Gb"/ls%?>I^;n8IcWL%BV5B;\1 JDDKH0.5eZC\40h8.t85,Sh't7DtlAJpup=o+0XNj6*f%c_TS\1OI]sT(e-RZ=hLT4lcD0?D"Y!>+]B4&OHaHKFgHU+bUCn#U+j463n`f&4-XGKFgHU+bUCn#U+j463n`f&4-XGKFgHU+bUCn#U+j463n`f&4-XGKFgHU+bUC>NPrcR"F'qj,kS F0.qG+ZFK[Sh*72:l[V$Mb(Y_]n)2U2-dT5FpKkN&!-W#Mec"ZL4RDY+Vg.N$mo 2:l_A0]&!c)ZktT4?G:&UoYQhd *67Q0i2$U/g kETufe8LDJ2)VJW`b;\HL2%\a /J13uI=#E9 P*b`l16O"s/e HG4X1WrNCZoG%s?-$YgCAu-'=.N?MFicn"WWhki"Sg>rL9PmjV)F]-0iP;>i:-#O%,>l_HU&$1S\@4lPnPZeDHXi-+Y1KC%B@h8uW6U]Ah/HX6iod*NRh8p$sZ+Z$!gE65;uNG>X__6T34?`In3[V0egQWL6qgP8_O:_G'RY$(56Jsu2 #OU%e"BN'F^$bMN(Za`)aXQtV^X8Y&+gBqWT/1u=M4Qm:M(HsE?4FQ/58nqdr]\cWb>43?CY-Lj[OsA!DY3nZp?pe.%0uSI4R0X9W6T`sJnOcY4VV2XktT5EPa%F O"cG"jIQBY)r!g7&-nWmlQp)GD-]bL7 19gcrt?&\3I/ -;^8QG>!ql[!@:%XCgkf]W\kY?7erW)4MJ>N,3ag6gq8PM_/4i/=/89&_GXq3s"-lbKO;8r%$l5Btj-++98i$E+[`"k;5h;*UmM$#_+E\"dQ\#N]>5!WhiY_Q_OF,2A4qV)Zq+n:]T`fLf'V;f=/h6@>^.N1f^.1.`s,$PE^MnBH7"DGAFSWH(?Bj5H4V&C(CU;"NfJK@G6DXHdV<>#>N?X*Rgo:i:q?;BKP[>G_)p_;T%8TcP297ULgVqh5sPMJ>p'!Ccn_,6?0o*Z>mMr=3M""DuK?,_@m:?7ba=gX62daCi1F[qS@S*YeFWS(SoXKmhS"Ta9dM4WYPb>5XSZehP8h:Zb?]#Nu'=&k1q*.'64L%qDqX.AL\Z. 7#4b^=pYXJjm\XF@E]I[/nZb85$W;^c^PAseR^6[6P>bAAk2tp.EPj=oZidKV^`j5]1\NujeNa3uHMVS%^5Y1gB7D_ud7`kjS)E YQF8F+_uP(]JUX?\HZ'MH!H*jOY/2=)W.o>ORoEC+`WqL46B)I/5SNRY471;0Ud/Igh#3($8MV/`"pC%2ie#m]doFLmfppZQhe(j(#Dl[eN*Z\>&N-_eX;q3J3rA+^M@U-Y" YLr>f*!`I9'ELG^trnSZ,@2EEoSdIPg!s'TYJ>_#a"_VYQQ`[i2uLI ?^J[IoB1R7!BQ)'TlF+5X3HEjkEQ[W[(IRBl,oZY.`ftfAO)+B/R&,L3E4]E TeYgUP3@Rs;[BpoX?o#IGdlX.fIOb:?VIe`8.Y$tU%t'E:gDCom&H-,^m'kGC]ER)%Y,=@lZ+NR*M1R%9V#-H;"+f-)iTO6tc:.$M5@OcY)iIZCCkbY9iP2RU.9i25d7`@sV6FT-lGVqh7)1MB8?^+rgO.'^%*,h /,&*4L?t!h`:RM$^n57R98Gl%k-*\rh?-i9&%,7 .3%S\?l8Lb=mn]G4(Rk*L0oEof/J5G\tH8uD^#`*%]IO+XuC`e4o:_ppYRg25*!;SEp;.b$-0&t_c' )u CDa0N^X(']K4d5JMHEXc$pYoWr#%V35dSc.^;OEMu"@u9o55KTK.oqLDg/]_n rRl%p/kMJH0bBR7N,OGct8OGD$Mo#U+j463n`f&4-XGKFgHU+bUCn#U+j463n`f&4-XGKFgHU+bUCn#U+j463n`f&4-XGKFgHU+bUCn#U+j46@Qj_[lZ74hf3!c6AW%;dGCP&'9fG3S?8>F(N2E4S#!N;pX\bM8=c5^]KU8M6>*t>DrJjTTs7sS)o]WBG kZWBp?#j*U[PsXs8=%'g M;a%tjV9]MY(VnX7s%H(68mdoH5FAZ[pKn'/rl!Rs6n/2lhsFXSZ<>\m:B`[5(:Dg]$l9C6Dd/H1,^c1;-F1;Jo *@*$7@i(4GZuJ,0tl(d7`/9o#B[Q#"sg?WD,jVYBB,*P4E:nA=k13#Hm";I/>T;)WhZ34CelXb;ci6U[nuBk_?q%m&b"8m1#&KpA^jVU*Gch;*Uqs.$Ig`2"[/_2!&+j` gC8)!(`(EnHFUnD\KPHbWS;Qt4j!t\?j? 6eg&?-+\uo`Pmk[2='d5d)Q8sOSZ!Bc+4RR&/(h4b7*iWVP5Qo'c.sQ%miKL7F1_cKNdB;p?pf!'ru:mij?=jYR#0(f8@a^U(k=C]\0!FT:iH%HERNY=s b@6XW^#qk9Y6mQHc#`CiiIZc\rYpc:C>l6a"CcC:N.0\o;n#`2H>r3b9DeWOYB&4o_r(u3X+)CN,inoF&V?,kjPf$9l'TeUr;3-,(DnCqCFDATJ5eXa(#OJjCH:0L=bb^]F=CX>OAW)?J0"P0.u953Xo^Q%5a93W4DjSKE.Kq(=FI4+'UOBcHM'K%lseW8,6Basf1bK/2(^k@fJ+>tjTWd=9)hQ+Pt5E#LD,$tmNH-3 t:3ST9J7i(a o(42\8_GgHA$h.[t1-ukWFR(-U:'m^b'W*/-F7#@W/ocIE;JeX
W/d5>@hpu$V4%IVQ(>Orl&^3Tl\dnEIFm3+,EXL4 8(T0?5M-7Xm#Z+][?[pWgQlu!.dJ G )#)u9/KUi$ur,kR;)'TObhTK'3ut"77afNStk+sSN-"+"-(TjH9)Rh'$@"Q>gRSg*N%\9?Pu8b`^bE5=Erg$?"c tEA0"T?=ZII$WJiU(+P/k:+`tW*5=8N2#0R0H5:EEl$E8)(MJH`2%gXJG!/"*IoL U&t%!r7YjTH9`P ,i!#P\[V 83b=fC)=b5ae\1g=^!6'YGbWFHt%K!b%t>"*LkDKriqQIX5r!fP/=GG>9C$:2nBLiS1%/i$Z2RijXq!j2+InF`'NP8W1G(Y_U(j0ubjep%m,e1u0ms=X)=1gZQIoG3H?Q#(/fU;"SoQbUhU+?cuIUI?'#dfjE::k:c2sb. l[0V/r.G,7-j;I0MrOJ;c6JUF\UQF[&mAQ.3QGmg;hEEE_sClDX'4rMYa`-c_`2]n-gJBE''bfpku;=X@&+pWbD%`Ihj[hQ#R!=>ofR$o&(a-pV=Zoc_ DsYN+6*&E2tBJ&O]?&-$[RV4UX%a7IYBTI8NM1oUuK0%neemSocEE"E sHC"_%]d5Wf6oJnqZD_mmSoRT-YiZ@^162S+c4CC=OnN1_G\$L0sZ8mGU@Zqf5SS(_-WONOF"qIamkJ,O4``J2A#5rEak)2,#jWW!U^!"!Vt]6?X&Lu++]hZka4FBJ&"1;==NTS"KN%BXeF=ZJN#3/Ln+grI%Oa#\83Id`X`9$:bF1W0hN@ .BKlu'ON&ZfUEH6c'G"3^0j7R[4bnL/pdC&H-nSWZdJ%!f/5ldXg:Er^U>%GO>*RUMY0J\&ADG.%ModLg@X1@ImIgYsrmo@9 Ii'?(f+:X8kAp]q52h[^sihJ`WjLbZ:b%RGa=ks\\(Um.nEc+"So%)+.h67VL@b*#:D%b+a3>R"mW+]9PZmG5H2aeX/q.@aKHROXf,?b?&K>$ZhGqm,)* p,YBbj*4f`1Ide=R9#]_J5^5FU!c Dk7PPs[I=e^!`Fm3rKFJs:fR4a;u*JU60OdFaHN-W3`B=L0i])umHEfPGKDs^n%-)Qa"H*g!t'b=Z?,Wj=X*sa+quB>9eop-RZ=aJ3)b@a]o&-a,uc[gG;^EPKnihu%.P*Z0o[d*AKiu1WW`R99MVUKN).ADa.:6ujo^E]UFDgBYXkYeWK0_aXdqWMD7UotN_bUdBe9LAOC2P,-\Q*Ze&^8s50baBk>hV4h2LbEg[o17qMbM.#dG4%QRU'O#5P[ns8Mo^ZA_I0`$WDX`5KTic;!ndVAk54n\t[,7cg*3U&XDD[P$C4J.N?@2JoMFY&)fd h7dJIm__Q!-h:]We\'_lj]:P$k04kr"p`Tn!\`4_2;`NIaU:`$BYY6",n58n"`ub/Tbn5^`4tfdS&;-T3l+G%.243+c#snn9)mC9#lHqYi!6F[f'$ME,tXo*Z>5'qiQlo!$7ol]$fiEUf+U6O>I^nQIq95dm:UT9j-;@^JY#mn1aFFm!onJJR-?=pCNciG@uN7E *37h:/uL`c%Yo97hs6-PWnKNA60c[ YV.F3`)LVdQ@GVF6^XjcW8XWdk`c0O.jRV@"I_Y,UET2N+$MRmQEoBdl-0p_FFr\W cR-*iK3EZ*F^?HMR9`E7f2ZE+f[).l