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

原文地址:http://blog.51cto.com/14048134/2312464

时间: 2024-10-07 20:07:37

SpringCloud分布式事务实战(七)在微服务1中创建整合函数,调用微服务2的相关文章

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

(1)创建工程 (2)添加 jar pom.xml添加:springboot 父, mysql连接,(mybatis, spring-mybatis springboot ,阿里连接池) ,服务中心客户端. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="

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

本文不对分布式事务原理进行探索,而是通过一个案例来说明如何使用分布式事务 案例需求:创建2个基于springCloud的微服务,分别访问不同的数据库:然后创建一个整合服务,调用微服务实现数据的保存到2个不同的数据库,要求采用分布式事务,要么都成功,要么都失败.案例拓扑图: 实现步骤:1 分布式事务处理器的编译和安装Redis 安装 注册中心编写分布式事务服务器安装 测试2 数据库准备及2个微服务的编写与测试.准备数据库编写微服务1和2注册到注册中心 测试 3 整合分布式处理服务整合:在微服务1

springCloud分布式事务实战(四)分布式事务处理器的下载,编译和运行

(1)下载分布式事务处理器工程源码https://github.com/codingapi/tx-lcn/(2)导入eclipse (3)修改配置文件填写分布式事务服务器地址,redis地址 ,注册中心地址#服务端口server.port=7000#tx-manager不得修改spring.application.name=tx-manager spring.mvc.static-path-pattern=/**spring.resources.static-locations=classpat

springCloud分布式事务实战(二) 分布式事务处理器的编译和运行之Redis安装

一.分布式事务处理器的编译和运行1)Redis 的安装和启动(1)下载redis 解压缩 (2) 启动和测试redis 1进入redis 目录 2 双击redis-server.exe 程序即可启动 3 启动客户端测试双击redis-cli.exe 输入 原文地址:http://blog.51cto.com/14048134/2310470

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

在BlockMicroService 工程 中加入(1)加入jar <!-- springCloud 事务 关键点1 --> <dependency> <groupId>com.codingapi</groupId> <artifactId>transaction-springcloud</artifactId> <version>${lcn.last.version}</version> <exclus

JTA分布式事务实战

spring3.0    分布式事务  jta  atomikos 1.使用如下jar包 atomikos-util.3.7.0.jar cglib-nodep-2.2.2.jar transactions-3.7.0.jar transactions-api-3.7.0.jar transactions-jdbc-3.7.0.jar transactions-jta-3.7.0.jar 2.spring配置文件如下: Xml代码   <?xml version="1.0" en

neutron中创建子网时禁用dhcp服务的问题

在neutron中创建provider网络时,可以指定是否禁用dhcp.若禁用,就可以使用物理网络中的dhcp服务.若使用物理网络的dhcp,就要禁用子网中提供的.如图

在 PHP 中使用 SOAP 协议调用 Web服务(WebService)

使用 PHP 中调用 WebService,听上去有些高深莫测啊. 其实这是很简单的一件事.由于 Web服务完全是基于 XML 这种平台无关性的标记语言来实现的,所以在 PHP中实现访问 WebService 是可能的.本例我们来完成这样一个 Web服务的调用:获取手机号信息.在互联网上找到这样一个 Web服务是比较容易的,这里我为大家提供一个现成的:http://www.webxml.com.cn/zh_cn/web_services_item.aspx?id=776756327947797A

最短路径规划中创建基于geoserver的wms服务

上篇文章写了求任意两点间最短路径的sql函数,这篇文章讲一下如何把上面介绍的子功能整合到系统中去. 1.geoserver登录 首先单击geoserver安装路径下的start Geoserver 待geoserver启动后,在浏览器中输入,http://localhost:8080/geoserver/web/ 输入用户名密码登录geoserver 2.创建工作区 单击左侧工作区,如下图所示: 会进入新建工作区页面,单击"添加新的工作区",如下图所示 在弹出的工作区设置中输入新工作区