功能
A服务提供接口,A服务调用B服务的方法,B服务实现A服务Dubbo接口.
提供者
A服务提供接口
import java.util.Map;
public interface ActivitiProcessService {
public ActivitiResp<Map> executeTask(Map param, String taskId,Map variables);
}
A服务调用B服务
public class testDubboGroup {
@Value("${dubbo.registry.username}")
private String dubboUsername;
@Value("${dubbo.registry.password}")
private String dubboPassword;
@Value("${dubbo.registry.protocol}")
private String dubboProtocol;
@Value("${dubbo.registry.address}")
private String dubboAddress;
@Reference(group = "")
private ActivitiProcessService activitiProcessService;
public ActivitiProcessService getInvokeService(String group) {
ApplicationConfig application = new ApplicationConfig();
application.setName("dubboConsumer");
RegistryConfig registry = new RegistryConfig();
String[] split = dubboAddress.split("//");
registry.setAddress(split[1]);
registry.setProtocol(dubboProtocol);
registry.setUsername(dubboUsername);
registry.setPassword(dubboPassword);
ReferenceConfig<ActivitiProcessService> referenceConfig = new ReferenceConfig<>();
referenceConfig.setApplication(application);
referenceConfig.setRegistry(registry);
referenceConfig.setGroup(group);
referenceConfig.setInterface(ActivitiProcessService.class);
ReferenceConfigCache cache = ReferenceConfigCache.getCache();
return cache.get(referenceConfig);
}
}
public CommonResp<Map> executeTask(Map map, String serviceName, String taskId) {
ActivitiResp<Map> activitiResp = getInvokeService("TestServiceImpl").executeTask(map, taskId,variables);
}
}
消费者
B服务实现接口
import com.alibaba.dubbo.config.annotation.Service;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@Slf4j
@DubboService
@Service(group = "TestServiceImpl")
public class TestServiceImpl implements ActivitiProcessService {
@Override
public ActivitiResp<Map> executeTask(Map param, String taskId, Map variables) {
log.info("调用成功!----------------------");
return ActivitiResp.successData(null);
}
}
import com.alibaba.dubbo.config.annotation.Service;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@Slf4j
@DubboService
@Service(group = "ServiceImpl")
public class ServiceImpl implements ActivitiProcessService {
@Override
public ActivitiResp<Map> executeTask(Map param, String taskId, Map variables) {
log.info("调用成功!----------------------");
return ActivitiResp.successData(null);
}
}