RabbitMQ ã¯ãRabbit Message Queue ãšãåŒã°ããErlang ããã°ã©ãã³ã°èšèªã§æžããããªãŒãã³ãœãŒã¹ã§ä¿¡é Œæ§ã®é«ã軜éã®ã¡ãã»ãŒãž ãããŒã«ãŒã§ããé«å¯çšæ§ãšæè»æ§ãç®æããŠèšèšããã RabbitMQ ã¯ãããŸããŸãªéä¿¡ãã¿ãŒã³ãåŠçããã¡ãã»ãŒãžåœ¢åŒã§ã®æ å ±äº€æã仲ä»ããããšã§å€æ°ã®ããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã ãšã·ãŒã ã¬ã¹ã«å¯Ÿè©±ã§ããæ©èœããããããããã¯ãšã³ãéçºã§åºãå©çšãããŠããŸãã RabbitMQ ã¯ãå埩åãšã¹ã±ãŒã©ãã«ãªåæ£ã·ã¹ãã ã®å®è£ ã«ãããŠéèŠãªåœ¹å²ãæãããã¢ããªã±ãŒã·ã§ã³ãåé¢ããããŒã¿ã®éåæè»¢éã管çããã®ã«åœ¹ç«ã¡ãŸãã
ããã¯ãšã³ãéçºã³ã³ããã¹ãã§ã¯ãRabbitMQ ã®ã³ã¢æ©èœã¯ã¡ãã»ãŒãž ãã¥ãŒãšã¡ãã»ãŒãžäº€æã®æŠå¿µãäžå¿ãšããAdvanced Message Queuing Protocol (AMQP)ãStream Control Transmission Protocol (SCTP)ãMessage Queuing Telemetry Transport ( MQTT)ãããã³ç°¡æ (ãŸãã¯ã¹ããªãŒãã³ã°) ããã¹ãæåã¡ãã»ãŒãžã³ã° ãããã³ã« (STOMP)ã RabbitMQ ã䜿çšããäž»ãªå©ç¹ã¯ãã¡ãã»ãŒãžé ä¿¡ãä¿èšŒããã¢ããªã±ãŒã·ã§ã³ããµãŒããŒã«é害ãçºçããå Žåã§ãããã»ã¹äžã«ããŒã¿ã倱ãããªãããã«ã§ããããšã«ãããŸãã
ããã¯ãšã³ããWebãããã³ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ãäœæããããã®åŒ·åãªno-codeãã©ãããã©ãŒã ã§ããAppMasterã¯ãããã¯ãšã³ãéçºããã»ã¹ã« RabbitMQ ãçµ±åããããšã®äŸ¡å€ãèªèããŠããŸãã RabbitMQ ã AppMaster ã§çæãããããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ã«çµã¿èŸŒãããšã§ãäŒæ¥ã¯å€§éã®åææ¥ç¶ãšã¡ãã»ãŒãžãåŠçã§ãããå¹çæ§ãå ç¢æ§ãã¹ã±ãŒã©ãã«ãªããŒã¿ ãã€ãã©ã€ã³ãæ§ç¯ã§ããŸããããã«ãGo (golang) ãš Erlang ã®äž¡æ¹ã§æäŸããããã€ãªã³ã¬ã« ãµããŒãã«ãããããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ã®ã·ãŒã ã¬ã¹ãªå¯Ÿè©±ãšã«ã¹ã¿ãã€ãºãä¿èšŒãããå šäœçãªããã©ãŒãã³ã¹ãšæ©èœãåäžããŸãã
RabbitMQ ã¯ãããã¯ãšã³ãéçºè ã®éã§äººæ°ã®ããããã€ãã®éèŠãªæ©èœãæäŸããŸããäœããããŸããRabbitMQ ã¯æ°Žå¹³ããã³åçŽã®ã¹ã±ãŒã©ããªã㣠ãªãã·ã§ã³ãæäŸããéçºè ãããŸããŸãªã¯ãŒã¯ããŒãã«å¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ã®ç¯å²ãæ¡å€§ããã¯ã©ã€ã¢ã³ãã®å¢å€§ããèŠæ±ã«å¯Ÿå¿ã§ããããã«ããŸãã RabbitMQ ã¯ãã¡ãã»ãŒãžç¢ºèªå¿çãæ°žç¶ã¹ãã¬ãŒãžãé ä¿¡äžèœãã¥ãŒã®ãµããŒããéããŠãã¡ãã»ãŒãžã®ä¿¡é Œæ§ã®é«ãé ä¿¡ãä¿èšŒããŸããããã«ãRabbitMQ ã¯ã¯ã©ã¹ã¿ãªã³ã°ãšãã§ãã¬ãŒã·ã§ã³ã®çµã¿èŸŒã¿ãµããŒããæäŸããç°ãªãããŒã¿ ã»ã³ã¿ãŒãŸãã¯å°ççå°åã«ãŸãããè€æ°ã® RabbitMQ ããŒããæ¥ç¶ããããšã«ããã忣åã®ãã©ãŒã«ã ãã¬ã©ã³ã ã·ã¹ãã ã®äœæãæ¯æŽããŸãã
RabbitMQ ã䜿çšããå©ç¹ã® 1 ã€ã¯ãRabbitMQ 管çãã©ã°ã€ã³ãªã©ã®å©çšå¯èœãªç£èŠããã³ç®¡çããŒã«ãè±å¯ã«ããããšã§ããRabbitMQ 管çãã©ã°ã€ã³ã¯ãã¡ãã»ãŒãž ãã¥ãŒã亀æãã³ã³ã·ã¥ãŒããããã³ãã€ã³ãã£ã³ã°ã®ç®¡çãšèŠèŠåã®ããã® Web ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãããã®ä»ã®æ³šç®ãã¹ãããŒã«ã«ã¯ãéçºè ãããã©ãŒãã³ã¹ ã¡ããªãã¯ãåéããŠèŠèŠåããããã©ãŒãã³ã¹ã®åæãšæ¹åã«åœ¹ç«ã€ææçŸ©ãªã¬ããŒããäœæã§ãã Prometheus ã Grafana ãªã©ããããŸãã
RabbitMQ ã®æçšæ§ã説æããããã«ãå€§èŠæš¡ãªé»ååååŒãã©ãããã©ãŒã ãæ°åã®ãã©ã³ã¶ã¯ã·ã§ã³ããªã¢ã«ã¿ã€ã ã§åŠçããå¿ èŠãããäŸãèããŠã¿ãŸãããããã©ãããã©ãŒã ã®ããã¯ãšã³ã ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãåšåº«ç®¡çãæ³šæåŠçã顧客é¢ä¿ç®¡çãæ¯æãåŠçãæ åœããäžé£ã®ã¢ããªã±ãŒã·ã§ã³ã§æ§æãããŠããŸãã RabbitMQ ãã¡ãã»ãŒãž ãããŒã«ãŒãšããŠæ¡çšããããšã§ããã©ãããã©ãŒã ã¯ãããã®ã¢ããªã±ãŒã·ã§ã³ã广çã«åé¢ã§ããã·ã¹ãã å šäœã®å®å®æ§ã«åœ±é¿ãäžããããšãªããã¢ããªã±ãŒã·ã§ã³ãç¬ç«ããŠåäœããããŸããŸãªã¯ãŒã¯ããŒããåŠçã§ããããã«ãªããŸããããã«ãRabbitMQ ã¯ããã©ãã·ã¥ã»ãŒã«ãããã¢ãŒã·ã§ã³ã€ãã³ãã«ãããã©ã³ã¶ã¯ã·ã§ã³éã®çªç¶ã®æ¥å¢ã«å¯ŸåŠããæ©èœãæäŸãããã©ãããã©ãŒã ã®ã¹ã ãŒãºã§äžæã®ãªãåäœãä¿èšŒããŸãã
çµè«ãšããŠãRabbitMQ ã¯ãããã¯ãšã³ãéçºã®é åã§ã¡ãã»ãŒãžããŒã¹ã®éä¿¡ãšããŒã¿ ãã€ãã©ã€ã³ã管çããããã®ã宿Šãã¹ãããæ¥çã§å®èšŒããããœãªã¥ãŒã·ã§ã³ã§ãã RabbitMQ ã¯ãã¡ãã»ãŒãžé ä¿¡ãä¿èšŒããæ©èœã«å ããããŸããŸãªã¡ãã»ãŒãžã³ã° ãããã³ã«ãç£èŠããŒã«ã«å¯Ÿããåºç¯ãªãµããŒããåããŠãããããå ç¢ã§ã¹ã±ãŒã©ãã«ãªããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ã®éçºãšä¿å®ã«ãããŠäŸ¡å€ã®ããè¿œå æ©èœãšãªããŸãã RabbitMQ ãno-codeãã©ãããã©ãŒã ã«çµ±åããããšã§ã AppMaster ãé«ãã¹ã«ãŒããããšããã©ãŒãã³ã¹ãéæããªãããè€éãªããã¯ãšã³ãã®èª²é¡ã«å¯ŸåŠã§ããä¿¡é Œæ§ãé«ãå¹ççãªã¢ããªã±ãŒã·ã§ã³ãé¡§å®¢ã«æäŸã§ããç¬èªã®ç«å Žã«ãããŸãã