因項目中遇到非Dubbo框架的系統需要調度Dubbo框架系統的任務。
嘗試了用expect方法,需要Linux安裝tcl和expect。
首先Dubbo官方文檔中有提到Linux調用Dubbo的方式
telnet localhost 20880
invoke XxxService.xxxMethod({"prop": "value"})
調用服務的方法。
#!/usr/bin/expect #invokeDubbo.exp if {$argc<0} { puts stderr "Usage: $argv0 dubboip dubboport service dataBody" exit 1 } set dubboip [ lindex $argv 0 ] set dubboport [ lindex $argv 1 ] set service [ lindex $argv 2 ] set dataBody [ lindex $argv 3 ] set timeout 30 spawn telnet ${dubboip} ${dubboport} expect { "*Connected*" { send "\r"; exp_continue } "*dubbo>" { send "invoke $service.execute\(\{$dataBody\}\) \r" } } expect eof
調用方式如下:
./invokeDubbo.exp 100.XX.XX.67 20880 ClearingApi \"accountDate\":\"20161220\"
