因项目中遇到非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 " "; exp_continue } "*dubbo>" { send "invoke $service.execute({$dataBody}) " } } expect eof
调用方式如下:
./invokeDubbo.exp 100.XX.XX.67 20880 ClearingApi "accountDate":"20161220"