SpringCloud分布式事务实战在微服务1中创建整合函数,调用微服务2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud分布式事务实战在微服务1中创建整合函数,调用微服务2相关的知识,希望对你有一定的参考价值。

(1) 添加jar pom.xml

    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>

(2)在主程序中添加注解
@EnableFeignClients

(3)编写调用微服务的代码(调用服务2)
1 创建theme实体

public class Theme {
private  Integer id;
private  String  tName;
private  String  tDescription;
get  set ;
}

2 编写访问theme服务代码

@FeignClient(value="themeMicroService",  //服务1

fallback=Demo2ClientHystric.class  //容错处理类 
)

public interface ThemeClient {

    @RequestMapping(value="/getThemeList",//2接口
            method=RequestMethod.GET)

    public    List<Theme>  getThemeList();//list

    @RequestMapping(value="/saveTheme",method=RequestMethod.GET)
     public int saveTheme(
             @RequestParam("tName") String tName  ,// 3传递参数
             @RequestParam("tDescription")  String tDescription,
             @RequestParam("blockId")   Integer blockId
             );

}

3 编写错误处理类

@Component
public class Demo2ClientHystric implements ThemeClient {
    @Override
    public List<Theme> getThemeList() {
        // TODO Auto-generated method stub
        System.out.println("进入断路器");
        throw new RuntimeException(" 失败.");
    }
    // 丢出异常
    @Override
    public int saveTheme(String tName, String tDescription, Integer blockId) {
        // TODO Auto-generated method stub
        System.out.println("进入断路器");
        throw new RuntimeException("失败.");
    }
}

(4)编写整合服务:访问2个服务
访问微服务1dao ,访问微服务2

1 接口:

public interface BlockThemeService {

    int saveBlockTheme(Block block, Theme theme);

}

2 实现

//第三个微服务整合
@Service
public class BlockThemeServiceImpl {
    @Autowired
    private BlockDao blockDao; // 1区块访问dao—微服务1内容

    @Autowired
    private ThemeClient themeClient; // 2主题微服务访问—微服务2的内容 

    @Transactional
    public int saveBlockTheme(Block block, Theme theme) {
            int rs1 = blockDao.saveBlock("jwg10", "111");// 3 保存1
        int rs2 = themeClient.saveTheme("jwg11", "111", 1);// 4 保存2
        return rs1 + rs2;
    }
}

(5)编写控制层

 发布整合接口

@RestController
public class BlockThemeController {
    @Autowired
    private BlockThemeService blockThemeService;
    @RequestMapping("/saveBlockTheme")
    public String saveBlockTheme() {
//调用整合服务
        Integer rs = blockThemeService.saveBlockTheme(null, null);
        return rs.toString();
    }
}

(6)测试

启动注册中心,启动themeMicroService ,启动BlockMicroService
启动浏览器
技术分享图片

预测结果:forum1 block 表增加 jwg10,111
Forum2 theme表增加jwg11 111

以上是关于SpringCloud分布式事务实战在微服务1中创建整合函数,调用微服务2的主要内容,如果未能解决你的问题,请参考以下文章

spring cloud 微服务之间feign接口调用,是怎么实现分布式事物的

springCloud分布式事务实战改造合服务BlockMicroService支持分布式事务

springCloud分布式事务实战案例需求及实现步骤

springCloud分布式事务实战分布式事务综合大测试(全,共10篇)

springCloud分布式事务实战案例需求及实现步骤

springCloud分布式事务实战编写第二个微服务