äž»ãªåé¡ã解決ããããã«ããã¥ãŒãã«ãŒããããã³ãã£ãã«ã®3ã€ã®äž»ãªããªããã£ãããããŸãã
ãã¥ãŒ
ãã¥ãŒã¯æãåºæ¬çãªããªããã£ãã§ãã ãã¥ãŒã䜿çšãããšãã¡ãã»ãŒãžãä¿åããå°çããé ã«ã¯ã©ã€ã¢ã³ãã«çºè¡ã§ããŸãïŒFIFOã®ååïŒã
åè¡ã¯ã䜿çšåã«å®£èšããå¿ èŠããããŸãã ãã¥ãŒã宣èšãããŠããªãå Žåããã¥ãŒãæäœãããšãã«ã³ãã³ãã»ããå šäœã䜿çšã§ããŸããã 宣èšã䜿çšãããšãã¯ã©ã€ã¢ã³ãã«ãããã¥ãŒã®äœ¿çšã远跡ãã誰ã䜿çšããŠãããããã¥ãŒã®äœææã«AUTODELETEãã©ã°ãæå®ãããŠããå Žåã¯èªåçã«åé€ã§ããŸãã
ã¡ãã»ãŒãžã®é ä¿¡ãä¿èšŒã§ããŸãã ä¿èšŒä»ãé ä¿¡ã䜿çšããã«ã¯ããã¥ãŒããã¡ãã»ãŒãžãååŸãããšãã«ã.queue_popã³ãã³ãã䜿çšããŠããŒã以å€ã®æ»ãã¿ã€ã ã¢ãŠãïŒããªç§åäœïŒãæå®ããŸãã 次ã«ãã¡ãã»ãŒãžãåä¿¡ãããã.queue_confirmã³ãã³ãã§é ä¿¡ã確èªããŸãïŒã¡ãã»ãŒãžã®äžæã®èå¥åã䜿çšïŒã æå®ãããæéã«é ä¿¡ã確èªãããªãå Žåãã¡ãã»ãŒãžã¯æãå€ããã®ãšããŠãã¥ãŒã«è¿ãããã§ããã ãæ©ã次ã®ã¯ã©ã€ã¢ã³ãã«çºè¡ãããŸãã
ã¡ãã»ãŒãžã®æå¹æéãå¶éããããšãã§ããæå¹æéãåãããšèªåçã«åé€ãããŸãã ä¿ææéã¯ããã¥ãŒã«éä¿¡ãããã¡ãã»ãŒãžã®å±æ§ã§ãã
ãã¥ãŒã¯ãã¯ã©ã€ã¢ã³ããžã®çä¿¡ã¡ãã»ãŒãžã®éåæé ä¿¡ããµããŒãããŠããŸãã éåæé ä¿¡ã䜿çšããã«ã¯ããã©ã°ã§ãµãã¹ã¯ãªãã·ã§ã³ã¢ãŒãã瀺ã.queue_subscribeã³ãã³ãã䜿çšããŠãã¥ãŒã«ãµãã¹ã¯ã©ã€ãããå¿ èŠããããŸãã ãã¥ãŒã«ã¯ãã¡ãã»ãŒãžãšéç¥ã®2ã€ã®ãµãã¹ã¯ãªãã·ã§ã³ã¢ãŒãããããŸãã
ã¡ãã»ãŒãžã¢ãŒãã§ã¯ãã¡ãã»ãŒãžãšã¡ãã»ãŒãžãå°çãããã¥ãŒã®ååãå«ãã€ãã³ããã¯ã©ã€ã¢ã³ãã«éä¿¡ãããŸãã ãã®å Žåãã¡ãã»ãŒãžã¯æ¢ã«ã¯ã©ã€ã¢ã³ãã«éä¿¡ãããŠããããããã¥ãŒã«ã¯å ¥ããŸããã ROUND_ROBINãã©ã°ã䜿çšããŠãã¥ãŒãäœæãããå Žåãã¡ãã»ãŒãžã¯ãã¹ãŠã§ã¯ãªãæ¯å1ã€ã®ã¯ã©ã€ã¢ã³ãã«ã®ã¿éä¿¡ãããŸãã ã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ã¯ãã¯ã©ã€ã¢ã³ãã«ã¡ãã»ãŒãžãé ä¿¡ããããã«äœ¿çšãããŸãã
éç¥ã¢ãŒãã§ã¯ããã®ã¢ãŒãã䜿çšããŠãã¥ãŒã«ãµãã¹ã¯ã©ã€ããããã¹ãŠã®ã¯ã©ã€ã¢ã³ããããã¥ãŒåã®ã¿ãå«ãã¡ãã»ãŒãžãéä¿¡ããŸãã ãã®ã€ãã³ãã¯ãã¡ãã»ãŒãžã誰ãã«éä¿¡ããããã¥ãŒã«å ¥ããªãã£ãå Žåã§ãããã®ã¢ãŒãã§ãã¥ãŒã®ãã¹ãŠã®ãµãã¹ã¯ã©ã€ããŒã«éä¿¡ãããŸãã
.queue_unsubscribeã³ãã³ãã䜿çšããŠãéåæã¡ãã»ãŒãžé ä¿¡ã®è³Œèªã解é€ã§ããŸãã
ãã¥ãŒãäœæãããšãã«ããã¥ãŒã®ååãä¿åã§ããã¡ãã»ãŒãžã®æ倧æ°ãã¡ãã»ãŒãžã®æ倧ãµã€ãºãšãã©ã°ã瀺ãããŸãã
ã¡ãã»ãŒãžã®æ倧æ°ã«ãããå¶éã«éãããšãã¥ãŒå ã®æ°ããã¡ãã»ãŒãžã®åä¿¡ãåæ¢ã§ããŸãã
æ倧ã¡ãã»ãŒãžãµã€ãºã䜿çšãããšããµã€ãºã®å€§ããã¡ãã»ãŒãžã®éä¿¡ãçŠæ¢ã§ããŸãã ãã®ãã©ã¡ãŒã¿ãŒã«2147483647ãè¶ ããå€ãæå®ããããšã¯ã§ããŸããã
ãã¥ãŒã¯ãAUTODELETEãFORCE_PUSHãROUND_ROBINãDURABLEã®4ã€ã®ãã©ã°ããµããŒãããŠããŸãã
AUTODELETEãã©ã°ã¯ã誰ã«ã宣èšãããŠãããããµãã¹ã¯ã©ã€ããŒãããªããã¥ãŒãèªåçã«åé€ããããã«äœ¿çšãããŸãã
FORCE_PUSHãã©ã°ã䜿çšãããšãã¡ãã»ãŒãžã®æ倧æ°ã«éãããšãã«ã¡ãã»ãŒãžããã¥ãŒã«éä¿¡ã§ããŸãã ããã¯ãæ°ããã¡ãã»ãŒãžãä¿åããããã«å€ãã¡ãã»ãŒãžãåé€ããããšã«ããå®çŸãããŸãã
ROUND_ROBINãã©ã°ã䜿çšãããšãæ¯å1人ã®ãµãã¹ã¯ã©ã€ããŒã«ã®ã¿ã¡ãã»ãŒãžãéä¿¡ã§ããŸãïŒäžèšã®èª¬æãåç §ïŒã
DURABLEãã©ã°ã¯ããã¥ãŒãæ°žç¶çã§ããããªããžããªå ã®ãã¹ãŠã®ã¡ãã»ãŒãžãšãšãã«ä¿åã§ããããšã瀺ããŸãã
ãã¥ãŒãæäœããããã®ã³ãã³ãã®ãªã¹ãïŒ
- .queue_createïŒååãmax_msgãmax_msg_sizeããã©ã°ïŒ
- .queue_declareïŒååïŒ
- .queue_existïŒååïŒ
- .queue_list
- .queue_renameïŒfromãtoïŒ
- .queue_sizeïŒååïŒ
- .queue_pushïŒååãã¡ãã»ãŒãžïŒ
- .queue_getïŒååïŒ
- .queue_popïŒååãã¿ã€ã ã¢ãŠãïŒ
- .queue_confirmïŒååãã¿ã°ïŒ
- .queue_subscribeïŒååããã©ã°ïŒ
- .queue_unsubscribeïŒååïŒ
- .queue_purgeïŒååïŒ
- .queue_deleteïŒååïŒ
ã«ãŒã
ã«ãŒãã¯ããã¥ãŒã䜿çšããããã®è£å©ããªããã£ãã§ãã ã«ãŒãã䜿çšãããšããã¥ãŒãç¹å®ã®ããŒã«é¢é£ä»ããŠãé«éã§å¹ççãªã¡ãã»ãŒãžé ä¿¡ãæŽçã§ããŸãã
ãã¥ãŒãããŒã«é¢é£ä»ããã«ã¯ã.route_bindã³ãã³ãã䜿çšããŸãã ã³ãã³ã.route_pushã¯ãã¡ãã»ãŒãžãã«ãŒãã«éä¿¡ããŸãã
ããŒã«ãã£ãŠã¡ãã»ãŒãžãã«ãŒãã«éä¿¡ãããšãã«è€æ°ã®ãã¥ãŒãæ¥ç¶ãããŠããå Žåãã¡ãã»ãŒãžã¯ã³ããŒãããªãããïŒåç §ã«ãŠã³ã¿ãŒïŒãã³ãã³ãã®å®è¡ãé«éåãããµãŒããŒã®ã¡ã¢ãªæ¶è²»ãåæžã§ããŸãã
ã«ãŒãã¯3ã€ã®ãã©ã°ããµããŒãããŸãïŒAUTODELETEãROUND_ROBINãDURABLEã
AUTODELETEãã©ã°ã¯ãããŒã«ãããã¥ãŒãžã®ãªã³ã¯ããªãå Žåãã«ãŒããèªåçã«åé€ããããã«äœ¿çšãããŸãã
ROUND_ROBINãã©ã°ã䜿çšãããšãã«ãŒãã§ã¡ãã»ãŒãžãåä¿¡ããŠââãããŒã§æ¥ç¶ããã1ã€ã®ãã¥ãŒã®ã¿ã«ã¡ãã»ãŒãžãéä¿¡ã§ããŸãã ã¡ãã»ãŒãžããã¥ãŒã«åæ£ããããã«ãã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ã䜿çšãããŸãã
DURABLEãã©ã°ã¯ãã«ãŒããæ°žç¶çã§ããããªããžããªå ã®ãã¹ãŠã®ããŒãšãšãã«ä¿åã§ããããšã瀺ããŸãã
ã«ãŒããæäœããããã®ã³ãã³ãã®ãªã¹ãïŒ
- .route_createïŒååããã©ã°ïŒ
- .route_existïŒååïŒ
- .route_list
- .route_keysïŒååïŒ
- .route_renameïŒfromãtoïŒ
- .route_bindïŒååããã¥ãŒãããŒïŒ
- .route_unbindïŒååããã¥ãŒãããŒïŒ
- .route_pushïŒååãããŒãã¡ãã»ãŒãžïŒ
- .route_deleteïŒååïŒ
ãã£ã³ãã«
ãã£ãã«ã¯ã顧客ã«ãªã¢ã«ã¿ã€ã ã§ã¡ãã»ãŒãžã䟿å©ã«é ä¿¡ããããã®ããªããã£ãã§ãã
äœæ¥ã®ååã¯ãã¯ã©ã€ã¢ã³ãã.channel_subscribeã³ãã³ãã䜿çšããŠç¹å®ã®ãããã¯ã«ãµãã¹ã¯ã©ã€ãã§ããããšã§ãã å¥ã®ã¯ã©ã€ã¢ã³ããããã£ãã«ã«ã¡ãã»ãŒãžãéä¿¡ããå Žåã.channel_publishããŒã ã¯ããã®ãããã¯ã«ãµãã¹ã¯ã©ã€ãããŠããã¯ã©ã€ã¢ã³ãã«ã¡ãã»ãŒãžãå«ãã€ãã³ããéä¿¡ããŸãã
.channel_psubscribeã³ãã³ãã䜿çšããŠããã³ãã¬ãŒãããšã«ãããã¯ã®ã°ã«ãŒãã«ãµãã¹ã¯ã©ã€ãããããšãã§ããŸãã ãã³ãã¬ãŒãã®åœ¢åŒã¯ãglobã¹ã¿ã€ã«ã®ãã¿ãŒã³ã§ãã
ãã£ãã«ã¯3ã€ã®ãã©ã°ããµããŒãããŸãïŒAUTODELETEãROUND_ROBINãDURABLEã
AUTODELETEãã©ã°ã¯ããµãã¹ã¯ã©ã€ããŒããªãå Žåã«ãã£ãã«ãèªåçã«åé€ããããã«äœ¿çšãããŸãã
ROUND_ROBINãã©ã°ã䜿çšãããšãå€ãã®ãµãã¹ã¯ã©ã€ããŒã®1ã€ã ãã«ã¡ãã»ãŒãžãéä¿¡ã§ããŸãã ã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ã¯ããµãã¹ã¯ã©ã€ããŒéã§ã¡ãã»ãŒãžãé åžããããã«äœ¿çšãããŸãã
DURABLEãã©ã°ã¯ããã£ãã«ãæ°žç¶çã§ãããã¹ãã¬ãŒãžã«ä¿åã§ããããšã瀺ããŸãã
ãã£ãã«ãæäœããããã®ã³ãã³ãã®ãªã¹ãïŒ
- .channel_createïŒååããã©ã°ïŒ
- .channel_existïŒååïŒ
- .channel_list
- .channel_renameïŒfromãtoïŒ
- .channel_publishïŒååããããã¯ãã¡ãã»ãŒãžïŒ
- .channel_subscribeïŒååããããã¯ïŒ
- .channel_psubscribeïŒååããã¿ãŒã³ïŒ
- .channel_unsubscribeïŒååããããã¯ïŒ
- .channel_punsubscribeïŒååããã¿ãŒã³ïŒ
- .channel_deleteïŒååïŒ
ãŠãŒã¶ãŒ
åEagleMQã¯ã©ã€ã¢ã³ãã¯ãã³ãã³ãã®å®è¡ãèš±å¯ãããããã«èªèšŒãããå¿ èŠããããŸãã èªèšŒãªãã§ã¯ã䜿çšã§ããã³ãã³ãã¯.disconnectã®ã¿ã§ãã
EagleMQã¯å€ãã®ãŠãŒã¶ãŒãæã€ããšãã§ããåãŠãŒã¶ãŒã¯ç¬èªã®æš©éã»ãããæã€ããšãã§ããŸãã
ãŠãŒã¶ãŒæš©éã«ã¯ã«ã¹ã¿ãã€ãºã®æè»æ§ããããŸãã ä»»æã®ã³ãã³ãïŒ.disconnectãé€ãïŒãç¡å¹ã«ããããšãã§ãããããããªããã£ããç¡å¹ã«ã§ããŸãã
ããã¯å€ãã®å Žåã«åœ¹ç«ã¡ãŸãã ããšãã°ããµãŒããŒãã¿ã¹ã¯ãã¥ãŒãšããŠäœ¿çšããã¿ã¹ã¯ãäœæããå€ãã®ã¯ã©ã€ã¢ã³ããšãã¿ã¹ã¯ãåŠçããå€ãã®ã¯ã©ã€ã¢ã³ãããããŸãã ãã®å Žåãã¿ã¹ã¯ãäœæããã¯ã©ã€ã¢ã³ãã¯ã.queue_pushã³ãã³ãã®ã¿ã®äœ¿çšãèš±å¯ããããšããå§ãããŸãã ã¯ã©ã€ã¢ã³ããã³ãã©ãŒã¯ã.queue_popã³ãã³ãã«å¯Ÿããååãªæš©éã®ã¿ãæã¡ãŸãã ããã«ãããããŒã¿ãä¿åããã¯ã©ã€ã¢ã³ãã«ã·ã¹ãã å ã®åœ¹å²ãæ確ã«å²ãåœãŠãããšãã§ããŸãã
ãŸããå€éšãããã¯ãŒã¯ã§åäœããããã«ãµãŒããŒãèšå®ããŠïŒããšãã°ãå°éèŠå ±ã®ãããªãã¯ãªã¢ã«ã¿ã€ã éä¿¡ïŒããŠãŒã¶ãŒãçŽæ¥æ¥ç¶ã§ããããã«ããå Žåã«ã圹ç«ã¡ãŸãïŒãã®å ŽåããŠãŒã¶ãŒã¯.channel_subscribeããã³.channel_psubscribeã«å¯Ÿããååãªæš©éãæã£ãŠããŸãïŒã
ãŠãŒã¶ãŒãæäœããããã®ã³ãã³ãã®ãªã¹ãïŒ
- .user_createïŒååããã¹ã¯ãŒããpermïŒ
- .user_list
- .user_renameïŒfromãtoïŒ
- .user_set_permïŒååãpermïŒ
- .user_deleteïŒååïŒ
åèšã§ãEagleMQã«ã¯çŸåš44ããŒã ããããŸãã ãã¹ãŠã®ã³ãã³ãã®ãªã¹ãã¯ããã¥ã¡ã³ãã«ãããŸãã
æ§èœ
EagleMQã®ããã©ãŒãã³ã¹ã¯ããªãé«ããªã£ãŠããŸãã å³å¯ãªå æ¬çãªæž¬å®ãšæ¯èŒãã¹ãã¯ãŸã å®æœãããŠããŸããã ããã¯äž»ã«ãåæ§ã®ã·ã¹ãã ã®äžã«ã¯ã¿ã¹ã¯ã埮調æŽããæ©èœïŒRabbitMQãªã©ïŒãããããããã®ã·ã¹ãã ã§ã®ç§ã®çµéšã客芳çã«è©äŸ¡ã§ããªãããšã«ãããã®ã§ãã
ä»ã®ã·ã¹ãã ãšã¯ç°ãªããEagleMQã¯ããã©ãŒãã³ã¹ã«åœ±é¿ããè¿œå ã®æ§æãã»ãšãã©å¿ èŠãšããŸããã ãŸããããªããã£ããéžæããéã«ãã¹ãããããééã£ãŠäœ¿çšãããããããšã¯ã»ãšãã©ãããŸããã
ãã¹ãã«ã¯ãlibemqã®ãã³ãããŒã¯ãã³ãããŒã¯ãŠãŒãã£ãªãã£ã䜿çšãããŸããã
ãã¹ãã®æ¬è³ªã¯ã.queue_pushã³ãã³ãã䜿çšããŠã¡ãã»ãŒãžããã¥ãŒã«éä¿¡ããããšã§ãã ã¢ããªã±ãŒã·ã§ã³ã¯50åã®ã¹ã¬ããã䜿çšããŸãã ãµãŒããŒã«æ¥ç¶ããããã«ãããŒã«ã«TCPãœã±ããã䜿çšãããŸããã
Intel CoreïŒTMïŒi5-2450M CPU @ 2.50GHz
ã¯ã©ã€ã¢ã³ã | åèšã¡ãã»ãŒãž | ã¡ãã»ãŒãžãµã€ãº | æéç§ | èŠæ±/ç§ |
---|---|---|---|---|
50 | 1,000,000 | 1000 | 9.20 | 108283.71 |
50 | 1,000,000 | 100 | 8.07 | 123931.09 |
50 | 1,000,000 | 10 | 8.05 | 124300.80 |
50 | 100,000 | 1000 | 0.95 | 105596.62 |
50 | 100,000 | 100 | 0.85 | 117096.02 |
50 | 100,000 | 10 | 0.81 | 123304.56 |
Intel CoreïŒTMïŒi5-3470 CPU @ 3.20GHz
ã¯ã©ã€ã¢ã³ã | åèšã¡ãã»ãŒãž | ã¡ãã»ãŒãžãµã€ãº | æéç§ | èŠæ±/ç§ |
---|---|---|---|---|
50 | 1,000,000 | 1000 | 5.19 | 192566.92 |
50 | 1,000,000 | 100 | 4.47 | 223613.59 |
50 | 1,000,000 | 10 | 4.40 | 227169.47 |
50 | 100,000 | 1000 | 0.53 | 189393.94 |
50 | 100,000 | 100 | 0.46 | 219298.25 |
50 | 100,000 | 10 | 0.45 | 220750.55 |
æç¶æ§
åEagleMQããªããã£ãã¯æ°žç¶çã§ãã éåžžããã®æ©èœããµããŒãããã«ã¯ãDURABLEãã©ã°ã䜿çšããŠããªããã£ããäœæããå¿ èŠããããŸãã ãŸããæ§æãã¡ã€ã«ã§ãªããžããªãŒãžã®ãã¹ãæå®ããä¿åééãæå®ããå¿ èŠããããŸãã
ãã¹ãŠã®ããŒã¿ã¯åžžã«RAMã«ä¿åãããŸãã
ã¹ãã¬ãŒãžã¡ã«ããºã ã®åäœåçã¯ãç¹å®ã®ééã§ããã»ã¹ïŒãã©ãŒã¯ïŒã®ã¯ããŒã³ãäœæããå¿ èŠãªãã¹ãŠã®ããŒã¿ããã¡ã€ã«ã«æžã蟌ãããšã§ãã ã¯ã©ã€ã¢ã³ãã®èŠæ±ã§ããŒã¿ãä¿åããã«ã¯ãã³ãã³ã.saveããããŸãã
å¯èœãªéãããã¹ãŠã®ä¿åããŒã¿ã¯liblzfã©ã€ãã©ãªã«ãã£ãŠå§çž®ãããŸãã
ãããã³ã«
EagleMQã«ã¯ç¬èªã®ãã€ããªãããã³ã«ããããŸãã
ãã®ãããªã·ã¹ãã ïŒAMQPãZMQïŒã§ã¯ãã»ãšãã©åžžã«ãã€ããªãããã³ã«ã䜿çšãããèŠæ±ãåŠçãããšãã«é«ãããã©ãŒãã³ã¹ãå®çŸããã®ã«åœ¹ç«ã¡ãŸãã
ãã¡ãããæ¬ ç¹ããããŸãã
- ãã€ããªãããã³ã«ã¯äººéãèªãã圢åŒã§ã¯ãããŸããã
- ã¹ã¯ãªããããã°ã©ãã³ã°èšèªã§ã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãå®è£ ããã®ã¯é£ããå ŽåããããŸãã
- äºææ§ã®ããã¯ã©ã€ã¢ã³ãã䜿çšããå¿ èŠæ§ ãã€ããªãããã³ã«ãå€æŽãããå ŽåããããŸãã
EagleMQãããã³ã«ã¯ãã¡ãžã£ãŒãªãªãŒã¹ã§ã®ã¿å€æŽã§ããŸãã
ããŒãããã
- è€æ°ã®ã³ãã³ããäžåºŠã«éä¿¡ããããã®æ¡åŒµãã±ããéçŽãµããŒãã çŸåšããã®ãããªãµããŒãã¯ãã§ã«å©çšå¯èœã§ããããã±ããæ倱ããããŸãã
- ãã€ããªãããã³ã«ã®ããã¥ã¡ã³ãã
- ã³ãã³ãã©ã€ã³ã䜿çšããŠEagleMQãå¶åŸ¡ããCLIãäœæããŸãã
- ãµã€ãwww.eaglemq.comã®æ¹è¯ãšã¡ã³ããã³ã¹ã
- 倧å°ã®ãšã³ãžã¢ã³ã¢ãŒããã¯ãã£ã®ãµããŒãã
- ãã¹ãŠã®æ©èœããã¹ãã§ã«ããŒããŸãã
ã¿ããªã³ã¡ã³ããã¡ãŒã«ã§ããªãã®è³ªåãããããšãã§ããŸãã åãã§ãçãããŸãã
ãããžã§ã¯ããªããžããªïŒ GitHub