摘要:当调用远程服务的时候,远程服务也可以调用消费者。
1、编写对应的接口
public interface IHelloWorld {
int save(CallbackService callbackService);
}
public interface CallbackService {
void callback();
}
2、实现类
public class HelloWorldImpl implements IHelloWorld {
public int save(CallbackService callbackService) {
System.out.println("dubbo-provider-20180811, 保存成功");
callbackService.callback();
return 0;
}
}
3、提供者配置spring。
dubbo.service.callbacks:客户端调用次数
dubbo.method.name:方法名称
dubbo.argument.callback:指明该参数是回调参数。index是参数索引,也可以通过type指定回调的参数类型。
<!-- callbacks:客户端调用次数 -->
<dubbo:service interface="com.hdd.api.IHelloWorld" ref="helloWorld" callbacks="2000">
<dubbo:method name="save" >
<dubbo:argument callback="true" index="0"/>
<!-- <argument callback="true" type="com.hdd.api.CallbackService"/> -->
</dubbo:method>
</dubbo:service>
4、消费者调用
public void testCallback() {
IHelloWorld helloWorld = (IHelloWorld) applicationContext.getBean("helloWorld");
helloWorld.save(new CallbackService() {
public void callback() {
System.out.println("call CallbackService");
}
});
}