рдЕрднрд┐рд╡рд╛рджрди, рд╣рдо рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рдХрдВрдкрдиреА рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЙрддреНрдкрд╛рдж рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЙрдирдХреЗ рдкреНрд░рд╛рд░реВрдк рдФрд░ рднрдВрдбрд╛рд░рдг рдкрджреНрдзрддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ -
ArkStore , рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рд╣рдо рдЙрд╕ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдордиреЗ рдЗрд╕рдХреЗ рд▓рдЧрднрдЧ рджреЛ-рд╡рд░реНрд╖реАрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдПрдХ IO рдкрд░рдд рдФрд░ (MQ (рдпрд╛ ZeroMQ) рдирд╛рдордХ рдЙрддреНрдкрд╛рдж рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ tryMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпреЛрдВ QMQ
рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - "рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП?", рдЬрдмрдХрд┐ рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдкреВрд░реА рдЖрдИрдУ рдкрд░рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИ рдФрд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реА рд╕рднреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЕрдХреНрдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕реНрдкреНрд░реЗ рдЖрдИрдУ (рдпрд╛ рдЕрдХреНрдХрд╛ рдЖрдИрдУ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдП, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЬрд┐рд╕
рдмрдЧ рдХреА рдЦреЛрдЬ рдХреА, рдЙрд╕рдиреЗ рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд
рд╣рд╛рд░реНрдЯрдмреАрдЯ рд╕рдВрджреЗрд╢ рдмрдирд╛рдиреЗ рдпрд╛ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕реЗрд╡рд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ред
рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ рд╕рдВрджреЗрд╢ рджрд▓рд╛рд▓реЛрдВ рдХреА рдУрд░ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
ActiveMQ ,
RabbitMQ рдФрд░
QMQ ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рднреА рджрд▓рд╛рд▓реЛрдВ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╣рдо .MQ рдкрд░ рдмрд╕ рдЧрдПред ActiveMQ рдмрд╣реБрдд рднрд╛рд░реА рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдФрд░ RabbitMQ рдиреЗ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдХреЛ рд╢реБрд░реВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ (рдПрдХ рд╕реНрдкрд╖реНрдЯ рдиреЗрддрд╛ рдХреЗ рдмрд┐рдирд╛) рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ред
├ШMQ рддреАрди рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рдЕрдВрддрд░рдг рдкреИрдЯрд░реНрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпреЗ рд╣реИрдВ:
- рдЕрдиреБрд░реЛрдз-рдЙрддреНрддрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рд╛рдорд╛рдиреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ, рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХреАред рдХреНрд▓рд╛рд╕рд┐рдХ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдореЙрдбрд▓ред
- рдкреНрд░рдХрд╛рд╢рди-рд╕рджрд╕реНрдпрддрд╛ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд░реНрд╡рд░ (рдкреНрд░рдХрд╛рд╢рдХ) рд╕рдордп-рд╕рдордп рдкрд░ рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕реЗрдВрд╕рд░ рд╣реИ рдЬреЛ рд╕рднреА рдЗрдЪреНрдЫреБрдХ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рдорд╛рдк рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдкреБрд╢-рдкреБрд▓ - рдпрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди , рд╣рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рдо (рдкреБрд╢) рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЧрдгрдирд╛ (рдХрд╛рд░реНрдпрдХрд░реНрддрд╛) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╢реАрди рдЗрди рд╕рдВрджреЗрд╢реЛрдВ (рдкреБрд▓) рдХреЛ рдЙрдард╛рддреЗ рд╣реИрдВ, рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХ (рдкреБрд╢) рдХреЛ рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдЧрдгрдирд╛ (рдкреБрд▓) рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЪрд┐рддреНрд░
рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рдЕрджреНрднреБрдд
рдЧрд╛рдЗрдб рд╕реЗ рдЗрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдФрд░ theseMQ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ (рдЕрдиреБрд░реЛрдз-рдЙрддреНрддрд░) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рд╣рдо ├ШMQ рдФрд░ JZMQ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ
рдХреЛрдб рдореЗрдВ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ codeMQ рдФрд░ Java рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд▓рд┐рдирдХреНрд╕
рд╕реЗрдВрдЯреЛрд╕ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА (рдпрд╣ рдЕрдиреНрдп * рдирд┐рдХреНрд╕ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ:
yum install libtool autoconf automake gcc-c++ make e2fsprogs
рд╣рдо рдбреЗрд╡рд▓рдкрд░ рдХреА
рд╕рд╛рдЗрдЯ рд╕реЗ .MQ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓реЗ рд▓реЗрдВрдЧреЗ рдФрд░ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВрдЧреЗ (3.2.4 рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп)ред
wget http://download.zeromq.org/zeromq-3.2.4.tar.gz tar -xzvf zeromq-3.2.4.tar.gz cd zeromq-3.2.4
рд╣рдо QMQ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ / usr / рд▓реЛрдХрд▓ / рд▓реЗрдмрд░ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╣реЛрдВрдЧреЗ, рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
./configure make sudo make install sudo ldconfig
рд╣рдо JMQ рдЗрдХрдЯреНрдареЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ JZMQ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬреАрдЖрдИрдЯреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рдорд╛рд╕реНрдЯрд░ рдпрд╛ рдЯреИрдЧ, рд▓реЗрдЦрди рдХреЗ рд╕рдордп рдЕрдВрддрд┐рдо рдЯреИрдЧ 2.2.2) рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрдВрдк рдХрд░рддреЗ рд╣реИрдВред
wget https://github.com/zeromq/jzmq/archive/v2.2.2.zip unzip jzmq-2.2.2.zip cd jzmq-2.2.2 ./autogen.sh ./configure make sudo make install sudo ldconfig
рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА / usr / lib / рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдВрдЧреЗред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ java.library.path рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди
-Djava.library.path = "/ usr / lib / рд╕реНрдерд╛рдиреАрдп" рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рд╕реАрдзреЗ
рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо java.library.path рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
java -XshowSettings:properties
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣реИ:
java.library.path = /usr/java/packages/lib/amd64 /usr/lib64 /lib64 /lib /usr/lib
рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрддреЗ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдЖрдк рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЪреБрдирддреЗ рд╣реИрдВред
рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛рдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд╕ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдВ:
whereis libzmq whereis libjzmq
рд╡рд┐рдВрдбреЛрдЬ
Libzmq рдХреЗ рд▓рд┐рдП рдПрдХрддреНрд░рд┐рдд dll рдлрд╛рдЗрд▓реЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░
рдпрд╣рд╛рдВ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП JZMQ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВрдиреЗ
CMAKE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореБрдЭреЗ Visual Studio 2013 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ libzmq рдФрд░ jzmq рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд╕рд╛рде рд╣реА, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ VVM (32 рдпрд╛ 64 рдмрд┐рдЯ) рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛрдВ,
рдпрджрд┐ libzmq.dll рдФрд░ jzmq.dll рдХреЛ PATH рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ JVM рдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╛рд░реНрдпрдХреНрд░рдо
рд╡рд╛рд╣, рд╣рдо рдЕрдВрдд рдореЗрдВ рд╣рдорд╛рд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ andMQ рдФрд░ JZMQ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ! рдЗрд╕реЗ рдЕрдорд▓ рдореЗрдВ рд▓рд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо
рдореИрдиреБрдЕрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░реЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╕рд░реНрд╡рд░ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)
- рдЙрд╕реА рд╕рдордп, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕рд░реНрд╡рд░ рдХреА рдореЗрдореЛрд░реА рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЛ рдкрдХрдбрд╝реЗ рд╣реБрдП, рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ред
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдЯреБрдХрдбрд╝реЗ (рдЪрдВрдХреНрд╕) рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЪреБрдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рд╡рд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
- рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдФрд░ рд╣рдо рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд╛рди рд╕реЗ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред
"рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ" тДв рдбреЗрдЯрд╛ рдХреА рдПрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдВред
dd if=/dev/urandom of=testdata bs=1M count=1024
рдЖрдЗрдП рдорд╛рдкреЗрдВ рдХрд┐ рдУрдПрд╕ рдХреЛ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдпреЗ рдЖрдВрдХрдбрд╝реЗ рдХрд╛рдлреА рдЕрдиреБрдорд╛рдирд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рддреБрд▓рдирд╛рддреНрдордХ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛ред
echo 3 > /proc/sys/vm/drop_caches time cp testdata testdata2 real 0m7.745s user 0m0.011s sys 0m1.223s
рдХреЛрдб рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВред рдЧреНрд░рд╛рд╣рдХ:
package com.coldsnipe.example; import org.zeromq.ZFrame; import org.zeromq.ZMQ; public class ZMQClient implements Runnable {
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ рдХрдИ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред
- рдХрдорд╛рдВрдб рдЬреЛ рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдб рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред
- рдХрдорд╛рдВрдб рдкреИрд░рд╛рдореАрдЯрд░ (рдпрджрд┐ рдореМрдЬреВрдж рд╣реИ) - рднреНрд░реВрдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ , рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЗрдВрдбреЗрдВрдЯ рд╣реИред
рдЧреНрд░рд╛рд╣рдХ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ "рдХреНрд░реЗрдбрд┐рдЯ" рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдЙрддрдиреЗ рд╣реА рднреНрд░реВрдг рдЯреАрдореЛрдВ рдХреЛ рднреЗрдЬреЗрдЧрд╛, рдЬрд╣рд╛рдВ "рдХреНрд░реЗрдбрд┐рдЯ" рд╢реЗрд╖ рд╣реИред рдХреНрд░реЗрдбрд┐рдЯ рддрднреА рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдпрд╛ рдиреАрдВрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рдХреЛ рдмрд╣реБрдд рдзреАрд░реЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдХрддрд╛рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рджрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдЯреБрдХрдбрд╝реЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдкреНрд░рддреНрдпреЗрдХ 250 рдЬреАрдмреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдирдП рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдмреЗрдХрд╛рд░ рдирд╣реАрдВ рдЦрдбрд╝рд╛ рд╣реЛрдЧрд╛ред
package com.coldsnipe.example; import org.zeromq.ZFrame; import org.zeromq.ZMQ; import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.Path; public class ZMQServer implements Runnable { private final ZMQ.Context zmqContext;
рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ (рд▓рд┐рдВрдХ рдЬреЛ рдЗрд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рд╣реИ) рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрдорд╛рдВрдб рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реИ -
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ред рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░реЗрдВ рдореИрдВ рдереЛрдбрд╝рд╛ рдХрдо рд▓рд┐рдЦреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдм рдкрд░реАрдХреНрд╖рдг рдФрд░ рдорд╛рдк рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдПред
package com.coldsnipe.example; import org.junit.Test; import org.zeromq.ZMQ; import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; public class ZMQExampleTest { @Test public void testDataExchange() throws Exception {
рд╣рдорд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг ZMQ.Context рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдорд╛рдкрддрд╛ рд╣реИред рдореИрдВ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рд╕рдВрджрд░реНрдн рд╣реИ рдХрд┐ рдЫрд┐рдкрд╛ рдХрдВрдбрдХреНрдЯрд░ рд╣реИ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднреАрддрд░ рд╣рдорд╛рд░реА рд╕реЙрдХреЗрдЯреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдФрд░ рдХрдм рднреЗрдЬрд╛ рдЬрд╛рдПред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рдирд┐рдпрдо рдпрд╣рд╛рдВ рд╕реЗ рд╣реИ -
рдкреНрд░рддрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╕рдВрджрд░реНрдн ред
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВред
4295 chunks received, 1073741824 bytes Elapsed time: 1.429522s
рдПрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдкрдврд╝рдиреЗ рдореЗрдВ 1.42 рд╕реЗрдХрдВрдб рд▓рдЧреЗред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХреЗрддрдХ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рд╕реНрдкреНрд░реЗ IO рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, QMQ 30-40% рддреЗрдЬреА рд╕реЗ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ IO рдкрд░ рд▓реЛрдб 100% (рд╕реНрдкреНрд░реЗ 85-90) рдХреЗ рдХрд░реАрдм рд╣реИ, CPU рд▓реЛрдб рд▓рдЧрднрдЧ рдПрдХ рддрд┐рд╣рд╛рдИ рдХрдо рд╣реИ ред
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рд╕реБрдзрд╛рд░
рдЬрдмрдХрд┐ рд╣рдорд╛рд░рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдб рдЬрд╛рдирддрд╛ рд╣реИ, рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдирдП рдХрдорд╛рдВрдб рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ:
- get - рд╕рдВрджреЗрд╢ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рд╡рд╣ рдбреЗрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
- рдЕрдВрдд - рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреЗрдЬрд╛ рдЧрдпрд╛ рдПрдХ рд╕рдВрджреЗрд╢, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рд╣реИрдВрдбрд▓рд░ рдЗрд╕ рддрд░рд╣ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ
else if(command.equals("get")) {
рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ред
public interface DataProvider { public DataBlob getBlob(String dataId); } public abstract class DataBlob { private final long size; private final String dataId; protected DataBlob(long size, String dataId) { this.size = size; this.dataId= dataId; } public abstract byte[] getData(long position, int length); public abstract void closeSource(); public long getSize() { return size; } public String getDataId() { return getDataId; } }
DataProvider рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, GetBlob рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ DataBlob рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн рд╣реИред
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП DataBlob рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ:
public class FileDataBlob extends DataBlob { private final FileChannel fileChannel; public FileDataBlob(long size, String dataId, Path filePath) { super(size, dataId); try { this.fileChannel = FileChannel.open(filePath); } catch (IOException e) { throw new DataBlobException(e); } } @Override public byte[] getData(long position, int length) { ByteBuffer byteBuffer = ByteBuffer.allocate(length); try { fileChannel.read(byteBuffer, position); byteBuffer.flip(); byte[] bytes = new byte[length]; byteBuffer.get(bytes); return bytes; } catch (IOException e) { throw new DataBlobException(e); } } @Override public void closeSource() { try { fileChannel.close(); } catch (IOException e) { throw new DataBlobException(e); } } }
рдЗрди рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╣рдо рдЖрдкрдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдФрд░ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВ, рдореГрдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рд░реНрдЯрдмреАрдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдореБрдлреНрдд рд╕рдВрд╕рд╛рдзрди, рдЖрджрд┐ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╣рдо рдЬрд╛рд╡рд╛ рдореЗрдВ inMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдпрд╣ momentMQ рд╣реИ рдЬреЛ рдореБрдЦреНрдп рд╕рдВрджреЗрд╢ рдмреНрд░реЛрдХрд░ рд╣реИ, рди рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд▓реНрдХрд┐ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рднреА, рдмрд▓реНрдХрд┐ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ (рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рддрдХ рдирд╣реАрдВ рджреЗрдЦреА рдЧрдИ рд╣реИ)ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдореИрдВ
рдЕрд░реНрдХрд╕реНрдЯреЛрд░ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ
рд╡рд╛рд▓реА рдЕрдиреНрдп рддрдХрдиреАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢
рдХрд░реВрдВрдЧрд╛ , рдЬрдмрдХрд┐
рдЕрдХреНрдХрд╛ рдФрд░ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡реЗрдм рдмрд╛рд░реА-рдмрд╛рд░реА рд╕реЗ рд╣реИрдВред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрдврд╝рд╛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛!