рд╣рдо RabbitMQ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рд╛рде Node.js рдкрд░ рдкрд╣рд▓рд╛ microservice рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ

рд╕рдордп рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝рддреА рд╣реИ рдФрд░ рдПрдХ рдореМрдЬреВрджрд╛ рдореЛрдиреЛрд▓рд┐рде рдореЗрдВ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХрдард┐рди, рд▓рдВрдмрд╛ рдФрд░ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдорд╛рдЗрдХреНрд░реЛрд╕реИрд╕рд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧред рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдирдП рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред


рдпрд╣ рд▓реЗрдЦ Nodejs рдФрд░ RabbitMQ рдкрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рд▓рд┐рдЦреЗрдЧрд╛, рдФрд░ рдПрдХ рдореЛрдиреЛрд▓рд┐рде рдХреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рднреА рджрд░реНрд╢рд╛рддрд╛ рд╣реИред


рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?


  1. рдЧреЗрдЯрд╡реЗред рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдЬреЛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрд╡рд░реНрдХ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд╣реАрдВ, рдЧреЗрдЯрд╡реЗ рдореЗрдВ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред
  2. Microserviceред рд╕реНрд╡рдпрдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд░, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
  3. рдкрд░рд┐рд╡рд╣рдиред рдпрд╣ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреЗрдЯрд╡реЗ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВрдЧреЗред рдкрд░рд┐рд╡рд╣рди HTTP, gRPC, RabbitMQ, рдЖрджрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпреЛрдВ RabbitMQ?


рдмреЗрд╢рдХ, рдЖрдк RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд░рд▓ HTTP рд╣реИ, Google рд╕реЗ gRPC рд╣реИред


рдореИрдВ RabbitMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрд░реНрдлрд╝рд┐рд╕ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реВрдВ, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрд╕ рдореЗрдВ рдХрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╕реЗ рд╕рдВрджреЗрд╢ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрд╡рд░реНрдХ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ (рднрд▓реЗ рд╣реА рд╡рд╣ рдЗрд╕ рд╕рдордп рдмрдВрдж рд╣реЛ рдФрд░ рдлрд┐рд░ рдЪрд╛рд▓реВ рд╣реЛ )ред рдЗрди рдлрд╛рдпрджреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рд╣рдЬ рддреИрдирд╛рддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╢реБрд░реБрдЖрдд


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреЗрдЯрд╡реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдирддреЗ рд╣реБрдП HTTP рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред


рд╣рдо RabbitMQ рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░реЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдФрд░ рдЧреЗрдЯрд╡реЗ рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВрдЧреЗ):


$ docker run -d -p 5672:5672 rabbitmq 

рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ micromq NPM рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


 $ npm init -y $ npm i micromq -S 

рдЧреЗрдЯрд╡реЗ рд▓рд┐рдЦрдирд╛


 //   Gateway     micromq const Gateway = require('micromq/gateway'); //    Gateway const app = new Gateway({ //  ,      microservices: ['users'], //  rabbitmq rabbit: { //     rabbitmq (default: amqp://guest:guest@localhost:5672) url: process.env.RABBIT_URL, }, }); //    /friends & /status   GET app.get(['/friends', '/status'], async (req, res) => { //     users await res.delegate('users'); }); //    app.listen(process.env.PORT); 

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛:


  1. рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдирдирд╛ рдФрд░ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ https://mysite.com/friends рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ
  3. рдЧреЗрдЯрд╡реЗ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдиреБрд░реЛрдз рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:
    3.1 рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░, рд╣реЗрдбрд░, рдХрдиреЗрдХреНрд╢рди рдЬрд╛рдирдХрд╛рд░реА, рдЖрджрд┐) RabbitMQ рдХрддрд╛рд░ рдореЗрдВ
    3.2ред рдорд╛рдЗрдХреНрд░реЛрд╕реЙрд░реНрд╕реНрдЯ рдЗрд╕ рдХрддрд╛рд░ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ
    3.3ред Microservice рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ
    3.4ред рдЧреЗрдЯрд╡реЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реБрдирддрд╛ рд╣реИ, рдПрдХ microservice рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
    3.5ред рдЧреЗрдЯрд╡реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ
  4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИред

рд╣рдо рдПрдХ microservice рд▓рд┐рдЦрддреЗ рд╣реИрдВ


 //   MicroService     micromq const MicroMQ = require('micromq'); //    MicroService const app = new MicroMQ({ //   (    ,    Gateway) name: 'users', //  rabbitmq rabbit: { //     rabbitmq (default: amqp://guest:guest@localhost:5672) url: process.env.RABBIT_URL, }, }); //   /friends   GET app.get('/friends', (req, res) => { //  json  res.json([ { id: 1, name: 'Mikhail Semin', }, { id: 2, name: 'Ivan Ivanov', }, ]); }); //   /status   GET app.get('/status', (req, res) => { //  json  res.json({ text: 'Thinking...', }); }); //     app.start(); 

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛:


  1. рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЧреЗрдЯрд╡реЗ рд▓рд┐рдЦреЗрдЧрд╛ рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░ рдХреЛ рд╕реБрдирдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
  2. рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рдЙрдкрд▓рдмреНрдз рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
  3. рдорд╛рдЗрдХреНрд░реЛрд╡реЗрд╕реНрдЯ рдЧреЗрдЯрд╡реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ
    3.1ред рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рд╣реЗрдбрд░, HTTP рдХреЛрдб рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп) RabbitMQ рдХрддрд╛рд░ рдореЗрдВ
    3.2ред рдЧреЗрдЯрд╡реЗ рдЗрд╕ рдХрддрд╛рд░ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ, рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
    3.3 рдЧреЗрдЯрд╡реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ

рдорд╛рдЗрдХреНрд░реЛрд▓реЗрд╕реНрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдореЛрдиреЛрд▓рд┐рде рдорд╛рдЗрдЧреНрд░реЗрд╢рди


рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 const express = require('express'); const app = express(); app.get('/balance', (req, res) => { res.json({ amount: 500, }); }); app.get('/friends', (req, res) => { res.json([ { id: 1, name: 'Mikhail Semin', }, { id: 2, name: 'Ivan Ivanov', }, ]); }); app.get('/status', (req, res) => { res.json({ text: 'Thinking...', }); }); app.listen(process.env.PORT); 

рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗ 2 рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: / рдорд┐рддреНрд░ рдФрд░ / рд╕реНрдерд┐рддрд┐ред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?


  1. рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдЦреАрдВрдЪреЛ
  2. рдЗрди рджреЛ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдХреЛ рдорд╛рдЗрдХреНрд░реЛ рд╕рд░реНрд╡рд┐рд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
  3. Microservice рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  4. рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬреЗрдВ

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрдм рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдорд╛рдЗрдХреНрд░реЛ-рд╕рд░реНрд╡рд┐рд╕ рдмрдирд╛рдпрд╛, рддреЛ рд╣рдордиреЗ рджреЛ рддрд░реАрдХреЗ / рдорд┐рддреНрд░ рдФрд░ / рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рдореЛрдиреЛрд▓рд┐рде рдХрд░рддрд╛ рд╣реИред


рдЧреЗрдЯрд╡реЗ рд╕реЗ microservice рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд┐рдбрд╡реЗрд╡реЗрдпрд░ рдХреЛ рд╣рдорд╛рд░реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЬреЛрдбрд╝рдХрд░ рдЙрд╕реА рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:


 const express = require('express'); //   Gateway     micromq const Gateway = require('micromq/gateway'); const app = express(); //    Gateway const gateway = new Gateway({ //   (    ,    Gateway) microservices: ['users'], //  rabbitmq rabbit: { //     rabbitmq (default: amqp://guest:guest@localhost:5672) url: process.env.RABBIT_URL, }, }); //  middleware  ,      app.use(gateway.middleware()); //    ,          app.get('/balance', (req, res) => { res.json({ amount: 500, }); }); //    /friends & /status   GET app.get(['/friends', '/status'], async (req, res) => { //     users //  res.delegate   middleware,     await res.delegate('users'); }); //   app.listen(process.env.PORT); 

рдпрд╣ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдПрдХ рд╕рд╛рдл рдЧреЗрдЯрд╡реЗ рд▓рд┐рдЦрд╛ рдерд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЧреЗрдЯрд╡реЗ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдореЛрдиреЛрд▓рд┐рде рдЬрд┐рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ


  1. рдПрдХ microservice рд╕реЗ рдПрдХ рдореЛрдиреЛрд▓рд┐рде / рдЧреЗрдЯрд╡реЗ рдХреЗ рд▓рд┐рдП RPC (рд░рд┐рдореЛрдЯ рдПрдХреНрд╢рди рдХреЙрд▓) (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП)
  2. рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП RabbitMQ рдХрддрд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рдХрд╛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрддрд╛ рд╣реИ

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХрд╣рд╛ рдерд╛ "RabbitMQ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Node.js рдкрд░ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рд╕реАрдЦрдирд╛" ред


Source: https://habr.com/ru/post/hi447074/


All Articles