рдпрд╣ " рд╣рдо RabbitMQ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рд╛рде Node.js рдкрд░ рдкрд╣рд▓рд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣реЗ рд╣реИрдВ " рд▓реЗрдЦ рдХреА рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣реЗрдмрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЗ рдмреАрдЪ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрд░реНрдХреНрд╕ рдЕрд▓рдЧ-рдерд▓рдЧ рд░рд╣реЗрдВред
рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ
рдЖрдкрдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрд░реНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд╡рд╣рд╛рдВ рд╕реЗ рдкрдврд╝реЗрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдХреБрдЫ рд╡реНрдпрд╛рдкрд╛рд░!
рдирд╣реАрдВ, рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ-рдерд▓рдЧ рд╣реИрдВ, рдХрд┐рд╕реА рдХреЛ рднреА рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИ (рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ)ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдмрдврд╝рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдФрд░ рдЖрдкрдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрд░реНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдЙрддреНрдкрд╛рдж рдЦрд░реАрджрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЛ рдмрд┐рдХреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд░реЛрдзрди рд▓рд╛рдн
рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдЕрдЦрдВрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИрдВ:
- рдорд╛рд▓
- рдЫреВрдЯ
- рдмреНрд▓реЙрдЧ
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ
рдПрдХ рджрд┐рди рдареАрдХ рд╣реИ, рд╣рдорд╛рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЧрд┐рд░ рд░рд╣рд╛ рд╣реИ: рдЕрдм рд╣рдореЗрдВ рдХреЛрдИ рдЙрддреНрдкрд╛рдж, рдХреЛрдИ рдЫреВрдЯ, рдХреЛрдИ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ, рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдЗрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд╡реНрдпрд╡рд╕рд╛рдп рд▓рд╛рдн рдЦреЛ рд░рд╣рд╛ рд╣реИред
рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдХрд┐рд╕реА рдЕрдиреНрдп рдмреНрд░рд╣реНрдорд╛рдВрдб рдореЗрдВ, рдЙрд╕реА рджрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрд░реЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рджреБрд░реНрдЧрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЖрдЙрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрдВрдЬреАрдХрд░рдг рдФрд░ рд▓реЙрдЧрд┐рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИ рдФрд░ рд╡реНрдпрд╡рд╕рд╛рдп рднреА рд▓рд╛рдн рдЦреЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ: рд╕рдВрднрд╛рд╡рд┐рдд рдЦрд░реАрджрд╛рд░ рдЙрдкрд▓рдмреНрдз рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдВрдкрдиреА рдХреЗ рдмреНрд▓реЙрдЧ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЫреВрдЯ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ microservice рдХрд╛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдмрд╣реБрдд рдХрдо рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрд╕реЗ рдХреНрд░рдорд┐рдХ рдЧрд┐рд░рд╛рд╡рдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдорддрд┐рд╣реАрдирддрд╛
рдПрдХ рдмрдбрд╝реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдПрдХ рдХрд╛рд░реНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдЫреЛрдЯреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИред рд░реЗрдбрд┐рд╕ рдХреЗ рд▓рд┐рдП рдирдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдирд╣реАрдВ, рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЙрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЬреЛ рд╣рдордиреЗ рддреАрди рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рд╕рдВрд╕реНрдХрд░рдг 0.1.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ Node.js 10 рдХреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрд╛ рд╢рд╛рдпрдж 12? рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореЛрдиреЛрд▓рд┐рде рд╕рдВрд╕реНрдХрд░рдг 6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╕рдВрд╡рд╛рдж рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЬрдм рд╕реЗ рд╣рдордиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ "рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдЙрддреНрдкрд╛рдж рдЦрд░реАрджрд╛, рд╣рдо рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЛ рдмрд┐рдХреНрд░реА рдХрд╛ рдиреЛрдЯрд┐рд╕ рднреЗрдЬрддреЗ рд╣реИрдВ", рддреЛ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред
рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рд┐рдВрдХ / рдмрд╛рдЬрд╛рд░ / рдЦрд░реАрджрдиреЗ / рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП microservice рдмрд╛рдЬрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ: / рдЖрдИрдбреА
- рдзреНрд╡рдЬ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рдж рдмреЗрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ
- Microservice рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ, microservice рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ WebSocket рдХреЗ рдЬрд░рд┐рдП рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ
- Microservice рд╕реВрдЪрдирд╛рдПрдВ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЛ рдЪреАрдЬреЛрдВ рдХреА рдмрд┐рдХреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреА рд╣реИ
MicroMQ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
$ npm i micromq@1 -S
рдЧреЗрдЯрд╡реЗ рд▓рд┐рдЦрдирд╛
const Gateway = require('micromq/gateway');
рд╣рдорд╛рд░реЗ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдПрдХ microservice рд╕реВрдЪрдирд╛рдПрдВ рд▓рд┐рдЦрдирд╛
const MicroMQ = require('micromq'); const WebSocket = require('ws');
рдпрд╣рд╛рдБ рд╣рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдФрд░ microservice рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рджреЛрдиреЛрдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдФрд░ RabbitMQ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХреЗрдВред
рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдорд╛рд░реЗ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдПрдХ
authorize
рдШрдЯрдирд╛ рднреЗрдЬрдХрд░ authorize
рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдЙрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬ рд╕рдХреЗрдВ
- рдПрдХ рдШрдЯрдирд╛ RabbitMQ рдкрд░ рдЖрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
- рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬреЗрдВ
рдПрдХ microservice рдмрд╛рдЬрд╛рд░ рд▓реЗрдЦрди
const MicroMQ = require('micromq'); const { Items } = require('./api/mongodb');
рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╣рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдХреА рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ
- рд╣рдо рд╕рд╣реА рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдЖрдЗрдЯрдо рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдмреЗрдЪрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ
- рдмреЗрдЪрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рд░реНрдХ рдЖрдЗрдЯрдо
- рд╣рдо рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдмрд┐рдХреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рднреЗрдЬрддреЗ рд╣реИрдВ
- рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ
рдЪреЗрдХ
- рд╣рдо 3 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
- рд╣рдо рдкреЛрд╕реНрдЯ / рдмрд╛рдЬрд╛рд░ / рдЦрд░реАрдж / 1 рднреЗрдЬреЗрдВрдЧреЗ
- рд╣рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИ
{ ok: true }
- рд╡рд┐рдХреНрд░реЗрддрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
$ PORT=9000 node ./src/gateway.js $ PORT=9001 node ./src/notifications.js $ MONGODB_URL=mongodb://localhost:27017/my-super-microservice node ./src/market.js
