
è¹ã«åŒ·ã颚ãå¹ããŸããã å°ããæ°Žãã¶ããšéšæ»Žã«ãããã¡ã¬ãã®äžã®ãããã«ã²ããåã£ãŠããªãé¡ãç®ã现ããŸããã å¯ãã ãã§ã¯ãããŸããã§ãããããããå Žæã«å¯ããæµžéããŸããã ãžã£ã±ããã®äžã«ãã³ãã åœŒã®æã¯éº»çºããè¡ãåã£ãã ããããè¹ä¹ãã¯å²¬ã®ã©ããã«éããªå³¶ããããæªå€©åãåŸ
ã€ããšãã§ããããšãç¥ã£ãŠããŸããã
æµ·å²žã¯æ¯ããä¹çµå¡ã«æšã®é³ãšreã®ããããã§åºäŒã£ãã 人ã
ã¯ãäŒæ¯ããæŽã£ãŠãèŠçŽ ãšã®éããç¶ããæ¥ã1æ¥ãããªãããšãç¥ã£ãŠããŸããã
ãããããµãã€ãã«ã¿ã¹ã¯ãæ¬ ããæ²é»ãšèªç¶ãšã®äžèŽã®ãŸãã«ãã®ç¬éã«ãåå è
ã®äžäººã§ãã人çã®ããã°ã©ããŒã®è³ã¯åŸ©geã®åé¡ãæ¢ãå§ããŸããã ããã¯èè
ã®è³ã§ããã圌ã¯ãã®ã¢ã€ãã¢ãçã¿åºããŸãã...
ãŸããã
7ãããã®å¹³åé床ã§ã5æ¥éã§è¹äžã§æ¥œããããšãã§ããŸããã
ã¯ããã«
ããã°ã©ããŒã®è·æ¥äžã®å¹žçŠã¯éåžžã«ç°¡åã§ã-ããªãã®å¥œããªèšèªã§é¢çœãã¿ã¹ã¯ãæžããŠãããã®ããã«ãéãåãåãããšïŒã§ããã°å°ããã¯ãªãããåžžã«ãéã¯å°ãªããïŒã ãã®ãããªèŠæã¯ã
SOA ïŒç¹ã«SOAP / WSDL / XML-RPC / JSON-RPCãªã©ïŒãRESTããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãªã©ãã¹ã¿ã³ãã¢ãã³ã¢ããªã±ãŒã·ã§ã³ãšãããã®éã®äº€æããã»ã¹ãšãã圢ã§ã¢ãããŒãå
šäœãçãŸãããšããäºå®ã«ã€ãªãããŸããã äžçªäžã®è¡ã¯ãUnixã®ååã«åŸã£ãŠãåå¥ã®æ©èœãã¢ããªã±ãŒã·ã§ã³ã«å²ãåœãŠããããããã®éã®ããŒã¿äº€æãåå¥ã«æå®ããããšããããšã§ãã
ç§ã®è¶£å³ã®1ã€ã¯ãã¹ããŒãããŒã ãã³ã³ãã¥ãŒãã£ã³ã°ã·ã¹ãã ãããã³ãã®ä»ã®åæ§ã®ã¿ã¹ã¯ãªã©ãå°ããªã¢ãžã¥ãŒã«ã®åæ£ãããã¯ãŒã¯ã®äœæ¥ã«é¢é£ããŠããŸãã ãããã®éã®éä¿¡ã«ã¯ãäžå€®ã®ã¡ãã»ãŒãžãããŒã«ãŒã䜿çšãããšäŸ¿å©ã§ãã å
žåçãªãœãªã¥ãŒã·ã§ã³ïŒ
RabbitMQ ãRedisã
ActiveMQããã³ãã®ä»ã®åæ§ã®ãœãªã¥ãŒã·ã§ã³ã æ¥çã®ã¢ã³ã¹ã¿ãŒã«ã¯ã
IBM BrokerãIBM MQ ã
Tibcoãªã©ããããŸãã
ããããç§ã¯ãããã«ã€ããŠå¥œãã§ã¯ãªãã£ããã®
æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®èŽåœçãªæ¬ é¥
- Apache Active MQããã³ãã®ä»ã®JavaããŒã¹ã®ãããŒã«ãŒã éå§æã«å°ãªããšã100MB-æãã¯16GBã®RAMã§ãããããããŸãã ç§ã¯Javaã«å¯ŸããŠäœããããŸããããããã§ã...
- IBMãTibcoããã³ãã®ä»ã ããã¯ãããªã«ãéã«ãªãã ãã-ç§ã¯äœãä»ã®ãã®ã«ããã䜿ãã ããã
- Rabbit MQãRedis ã ããããæãæ£ããéžæè¢ã§ãããç§ã¯äŒæäžã§ããã€ãŸããããã¯ç§ãã¡ã®ããæ¹ã§ã¯ãããŸããã
éžæã¯ãã·ã³ãã«ã§ãããã³ã«ã«ãŒã¿ãŒã¡ãã»ãŒãžã䜿çšããããªãœãŒã¹æ¶è²»ã®å°ãªãããŠãããŒãµã«ã§é«éãªç¬èªã®å®è£
ã«åºã¥ããŠããŸãã
ã³ã³ããŒãã³ã
ã¡ãã»ãŒãžã³ã°ã容æã«ããããã®
ZeroMQ圢åŒã®éä¿¡å±€ã
ããã°ã©ãã³ã°èšèªã«ã¯åé¡ããããŸãã JVMããŒã¹ã®PythonãRubyã¯ãä»®æ³ãã·ã³ã®ããã«äžæãããŠããŸããããã¯ãéå°ãªãªãœãŒã¹æ¶è²»ãæå³ããŸãã Rustãæ¬²ããã£ãã®ã§ãããå®è£
ãéå§ããåŸãæšæºã©ã€ãã©ãªãããã«å®å®ãããŸã§åŸ
ããªããã°ãªããªãããšã«æ°ä»ããŸããã Go-zmqã®ãã€ãã£ãå®è£
ãããã°çŽ æŽãããã§ãããã çµæã¯C ++ / Cã§ãã
äž»ãªå®è£
ãããŒã«ãŒã®æ§æã¯æ¬¡ã®ãšããã§ãã
- ãµãŒãã¹-èŠæ±ãžã®å¿çã¢ãŒãã§åäœããããŒãœãã©ã€ãºãããã¯ã©ã€ã¢ã³ãïŒZMQ_DEALERïŒ
- ã¯ã©ã€ã¢ã³ã-å¿åã¯ã©ã€ã¢ã³ãïŒZMQ_REQïŒããããŒã«ãŒãéããŠãµãŒãã¹ãžã®ãªã¯ãšã¹ããåŠçããå¿çãåŸ
ã¡ãŸãã
ãããŒã«ãŒæ¥ç¶ãã€ã³ãã¯ãROUTERã¿ã€ãã®ãœã±ããã§ãã ïŒã¯ã©ã€ã¢ã³ãããïŒREQãœã±ããããããŒã¿ãåä¿¡ãããšãäžæã®ã¯ã©ã€ã¢ã³ãã³ãŒããå«ãã¡ãã»ãŒãžãçæãããŸãã æ¬¡ã«ããµãŒãã¹åã顧客çªå·ããã®ä»ã®ããŒã¿ã§æ§æããããµãŒãã¹ãžã®ãªã¯ãšã¹ãçšã®ããã±ãŒãžãäœæãããŸãã æŠç¥çã«ã¯ãããã¯æ¬¡ã®ããã«è¡šãããšãã§ããŸãã

ã³ãŒãã¯
GitHubã§è¡šç€ºã§ããŸãã
äºæ¬¡å®è£
å®è£
ã¯
éåžžã«åçŽã«èŠããŸããã åé¡ã®å¥ã®éšåãèŠã€ããŠè§£æ±ºããå¿
èŠããããŸããã
åãååã®è€æ°ã®ãµãŒãã¹ã€ã³ã¹ã¿ã³ã¹ã䜿çšããæ¹æ³
è² è·åæ£ãšèé害æ§ã«é©ããŠããŸãã
å®éãDEALER-to-ROUTERã¢ãŒãã§åãæ¥ç¶åã䜿çšãããšãæåŸã®æ¥ç¶ã®ã¿ã䜿çšãããŸãã
ãœãªã¥ãŒã·ã§ã³ã¯ããããŒã«ãŒã«æ¥ç¶ããDEALER-to-DEALERã¢ãŒãã§åå¥ã®æ¥ç¶ãã€ã³ããäœæãããµãŒãã¹ããšã«åå¥ã®ããŒããã©ã³ãµãŒã§ãã ãã®å ŽåããµãŒãã¹ã®å Žåãæ¥ç¶ã¢ãã¬ã¹ããããŒã«ãŒã§ã¯ãªããã©ã³ãµãŒã«å€æŽããã ãã§ååã§ãã
ãã©ã¡ãŒã¿äœ¿çšæ³ïŒ
waha-proxy-balance [-b <zmq bind>] [-v] -n <name> [-u <zmq bind>] [-]
[-ããŒãžã§ã³] [-h]
ã©ãã§ïŒ
-b <zmq bind>ã-backend <zmq bind>
ãããã·ã®ããã¯ãšã³ããã€ã³ãã£ã³ã°
-vã-verbose
ããå€ãã®åºåã衚瀺ãã
-n <åå>ã-åå<åå>
ïŒå¿
é ïŒãã©ã³ã·ã³ã°ãµãŒãã¹å
-u <zmq bind>ã-url <zmq bind>
ãããŒã«ãŒURL
-ã-ignore_rest
ãã®ãã©ã°ã«ç¶ãã©ãã«ä»ãåŒæ°ã®æ®ããç¡èŠããŸãã
-ããŒãžã§ã³
ããŒãžã§ã³æ
å ±ã衚瀺ããŠçµäºããŸãã
-hã-help
äœ¿çšæ
å ±ã衚瀺ããŠçµäºããŸãã
ãããŒã«ãŒæ®é«ã¢ãžã¥ãŒã«
ã³ãŒãã¯
githubã«ãããŸãHTTPçµç±ã§ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãæäŸããæ¹æ³ã¯ïŒ
å°ãªããšãã¹ããŒãããŒã¹ã¿ãŒãä»ããŠäœæ¥ããèœåãèããã°ãHTTPã€ã³ã¿ãŒãã§ãŒã¹ã«å¯Ÿãã人ã
ã®å€§ããªãæãèããã°ãããã¯ç¡æå³ã§ã¯ãããŸãããæ£ããå®è¡ããå¿
èŠããããŸããjson/ãã¬ãŒã³åºåãGETããã³POSTãªã¯ãšã¹ãã®äž¡æ¹ã®ãµããŒãããã¹ãŠã®æ¶é²å£«ã®JSONPã§ãã
Pocoã©ã€ãã©ãªã䜿çšãããšãå¥ã®ããŒã¢ã³ãšããŠå®è£
ãããããšãããããŸããã
- GETèŠæ±ãŸãã¯POSTæ¬äœã®argsãã©ã¡ãŒã¿ãŒã«ã¯ãJSONé
åãå«ãŸããŠããå¿
èŠããããŸãã
- ãªãã·ã§ã³ã®ã¿ã€ã ã¢ãŠããã©ã¡ãŒã¿ã¯ãããªç§åäœã®æå€§å¿çæéã§ãã
- ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã¿ã€ã-æ»ãããŒã¿ã¿ã€ã-ãã¬ãŒã³ãŸãã¯json
- ãªãã·ã§ã³ã®jsonpãŸãã¯callabackãã©ã¡ãŒã¿ãŒ-JSON-Pãªã¯ãšã¹ãã®é¢æ°å
ãã©ã¡ãŒã¿äœ¿çšæ³ïŒ
waha-proxy-http [-t <ms>] [--threads <int>] [-p <int>] [-v] [-u <zmq
bind>] [-] [--version] [-h]
ã©ãã§ïŒ
-t <ms>ã-timeout <ms>
ãtimeoutããã©ã¡ãŒã¿ãªãã§ã¿ã€ã ã¢ãŠããèŠæ±ããŸãã -1-ç¡é倧
--threads <int>
HTTPæå€§ã¹ã¬ãã
-p <int>ã-port <int>
HTTPãã€ã³ãã£ã³ã°ããŒã
-vã-verbose
ããå€ãã®åºåã衚瀺ãã
-u <zmq bind>ã-url <zmq bind>
ãããŒã«ãŒURL
-ã-ignore_rest
ãã®ãã©ã°ã«ç¶ãã©ãã«ä»ãåŒæ°ã®æ®ããç¡èŠããŸãã
-ããŒãžã§ã³
ããŒãžã§ã³æ
å ±ã衚瀺ããŠçµäºããŸãã
-hã-help
äœ¿çšæ
å ±ã衚瀺ããŠçµäºããŸãã
ãããŒã«ãŒHTTPãããã·ïŒRESTæ§ïŒã¢ãžã¥ãŒã«
ã³ãŒãã¯
githubã«ãããŸããªããã³ãªã®ãããŒã¹ã/ libeventãªã©ãããŠã¿ãŸãããïŒ Pocoã¯ã·ã¹ãã ã³ãŒã«ã«å¯Ÿããéåžžã«èãã©ãããŒã§ããããã远å ã®ããã£ãããããªããæå°éã®åŽåãšåªããããã¥ã¡ã³ãã§çµã¿ç«ãŠãããŸãã ãããŠãããã¯ããŒã¹ããããã¯ããã«æç¢ºã ãšããããšã§ãã
åªãã管çè
ãäœããããã°ã©ã ã«æ¶æ¥µçãªäººãäœãã«ã¯ã©ãããã°ããã§ããïŒ
ä»ã®ããã°ã©ã ãåŒã³åºããã¡ãã»ãŒãžãã£ãŒã«ããåŒæ°ãšããŠæž¡ããåºåãåçãšããŠè§£éããããŒã¢ã³ãäœæããŸãã ãã®ãããªCGIã«ãã£ãŠç°¡çŽ åãããŸãã
ãã©ã¡ãŒã¿äœ¿çšæ³ïŒ
waha-service-script [-s <ã¹ã¯ãªãã>] [--no-stdout] [-e] [-r] -n <åå>
[-v] [-u <zmq bind>] [-] [--version] [-h] <string>
...
ã©ãã§ïŒ
-s <ã¹ã¯ãªãã>ã-ã¹ã¯ãªãã<ã¹ã¯ãªãã>
ãã¹ã¯ãªãããã¢ãŒãã®ã¹ã¯ãªãããã¹
--no-stdout
ã¡ãã»ãŒãžãšããŠstdoutã䜿çšããªãã§ãã ãã
-eã-stderr
ã¹ã¯ãªããã®æšæºãšã©ãŒåºåã远å ãã
-rã-ret-code
ã¡ãã»ãŒãžã®æåŸã®ãã£ãŒã«ããšããŠã¹ã¯ãªããæ»ãã³ãŒãã远å
-n <åå>ã-åå<åå>
ïŒå¿
é ïŒãã©ã³ã·ã³ã°ãµãŒãã¹å
-vã-verbose
ããå€ãã®åºåã衚瀺ãã
-u <zmq bind>ã-url <zmq bind>
ãããŒã«ãŒURL
-ã-ignore_rest
ãã®ãã©ã°ã«ç¶ãã©ãã«ä»ãåŒæ°ã®æ®ããç¡èŠããŸãã
-ããŒãžã§ã³
ããŒãžã§ã³æ
å ±ã衚瀺ããŠçµäºããŸãã
-hã-help
äœ¿çšæ
å ±ã衚瀺ããŠçµäºããŸãã
<string>ïŒè€æ°ååãå
¥ããããŸãïŒ
ã¹ã¯ãªããã®äºåå®çŸ©ãããåŒæ°
ãããŒã«ãŒã¹ã¯ãªãããµãŒãã¹
ã³ãŒãã¯
githubã«ãããŸãããã«æ¹åããæ¹æ³ã¯ïŒ
ã³ã³ãœãŒã«ãããã¹ãŠã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ããŸãã ãã¬ãŒã³/ hex / base64 / jsonå
¥åºåã䜿çšã
ãã©ã¡ãŒã¿äœ¿çšæ³ïŒ
waha-cli [-t <ms>] -n <name> [-v] [-u <zmq bind>] [-p] [-e <plain
| base64 | hex>] [--out-sep <char>] [-o <empty | plain | delimited
| json>] [-d <plain | base64 | hex>] [--in-sep <char>] [-i <args
|ãã¬ãŒã³|åºåã| json>] [-] [--version] [-h] <string> ...
ã©ãã§ïŒ
-t <ms>ã-timeout <ms>
èŠæ±ã¿ã€ã ã¢ãŠãã -1-ç¡é倧
-n <åå>ã-åå<åå>
ïŒå¿
é ïŒãªã¢ãŒããµãŒãã¹å
-vã-verbose
ããå€ãã®åºåã衚瀺ãã
-u <zmq bind>ã-url <zmq bind>
ãããŒã«ãŒURL
-pã-pretty
ãjsonãã®ããªãã®JSONåºå
-e <ãã¬ãŒã³| base64 | hex>ã-encoder <ãã¬ãŒã³| base64 | hex>
ãåºåããåºåã®åºåãšã³ã³ãŒããŒ
--out-sep <char>
åºåã»ãã¬ãŒã¿ãŒ
-o <empty | plain | delimited | json>ã--output <empty | plain | delimited | json>
CLIã¢ãŒãã®åºåã¢ãŒã
-d <ãã¬ãŒã³| base64 | hex>ã-decoder <ãã¬ãŒã³| base64 | hex>
ãåºåããå
¥åçšã®å
¥åãã³ãŒããŒ
--in-sep <char>
å
¥åã»ãã¬ãŒã¿ãŒ
-i <args | plain | delimited | json>ã--input <args | plain | delimited | json>
CLIã¢ãŒãã®å
¥åã¢ãŒã
-ã-ignore_rest
ãã®ãã©ã°ã«ç¶ãã©ãã«ä»ãåŒæ°ã®æ®ããç¡èŠããŸãã
-ããŒãžã§ã³
ããŒãžã§ã³æ
å ±ã衚瀺ããŠçµäºããŸãã
-hã-help
äœ¿çšæ
å ±ã衚瀺ããŠçµäºããŸãã
<string>ïŒè€æ°ååãå
¥ããããŸãïŒ
ãargsãå
¥åã®èŠæ±ã¡ãã»ãŒãžã®åŒæ°
ZMQãããŒã«ãŒã³ã³ãœãŒã«ã¯ã©ã€ã¢ã³ãã€ã³ã¿ãŒãã§ã€ã¹
ããã®ã³ãŒãã¯
githubã§ããã¹ãŠã®çµã¿ç«ãŠ
GIT + CMake +ã¡ã€ã¯
git clone https://github.com/reddec/waha.git && cd waha && mkdir build && cd build
cmake ../-DCMAKE_BUILD_TYPE =ãªãªãŒã¹
make && make package
Debiançšããã±ãŒãžã¯wahaã«ãããŸã-*ãDebãæ®ãã®waha-*ãZip
䜿çšäŸ
èªã¿èŸŒã¿ã®è² è·ã倧ãããæžã蟌ã¿ãå°ãªããŠãŒã¶ãŒã®æ¿èªã
ãããŒã«ãŒã®èµ·åïŒããã©ã«ãããŒãã¯10000ïŒ
$ã¯ããããŒã«ãŒ
èªã¿åãã®ããã®ãã©ã³ãµãŒã®éå§ïŒããã©ã«ãã§ã¯ãããŒã10001ïŒ
$ waha-proxy-balance -n system.user.check
httpasswdãèµ·åããŠããã°ã€ã³/ãã¹ã¯ãŒãã確èªããŸãïŒè² è·ã忣ããããã«å¿
èŠãªåæ°ã ãå®è¡ããŸãïŒã ã·ã£ããããŠã³ã³ãŒãã®ã¿ãè¿ããŸãã åŸã«æ¥ããã®ã¯ãã¹ãŠãåŒæ°ãšããŠã¹ã¯ãªããã«æž¡ãããŸãã
$ waha-service-script -u tcpïŒ//127.0.0.1ïŒ10001 -n system.user.check -s htpasswd --ret-code --no-stdout--bv users.passwd
åºåãšãšãã«ãŠãŒã¶ãŒã远å ããããã®ã¹ã¯ãªãããå®è¡ããïŒãã©ã³ã¹ããšãããšãªãïŒ
$ waha-service-script -n system.user.add -s htpasswd --ret-code --stderr--b users.passwd
HTTPã€ã³ã¿ãŒãã§ãŒã¹ã®éå§ïŒããã©ã«ãã®ããŒã9001ïŒ
$ waha-proxy-http
ãªã¯ãšã¹ãäŸ
http://127.0.0.1:9001/system.user.check?args=["admin","admin "]
http://127.0.0.1:9001/system.user.check?args=["admin","admin"â &callback=func123
ã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ã®äœ¿çš
ãã©ãŒããããªãã®åºåïŒ
$ waha-cli -n system.user.check admin admin
JSONã§ã®åºåïŒ
$ waha-cli -o json -n system.user.check admin admin
ãŸãšã
ã¬ãžã£ãŒããªã©ã¯ãŒãŒã·ã§ã³äžã«æ¥œããããã°ã©ããŒã«ãã£ãŠæžããããæ©èœããã¢ãžã¥ãŒã«åŒã®ã¡ãã»ãŒãžãããŒã«ãŒã ã³ãŒããæ¶ããªãããã«ãå
¬éããŸããã
ãããå¿
èŠãªå Žåã¯ããçžè«ãã ããã