mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
Polish : spring-cloud-incubator/spring-cloud-alibaba/issues#377 : Use Apache Dubbo 2.7.x as Spring Cloud Infrastructure
This commit is contained in:
@@ -5,5 +5,5 @@ mysql.server.ip=127.0.0.1
|
||||
mysql.server.port=3306
|
||||
mysql.db.name=demo
|
||||
|
||||
mysql.user.name=xxxxx
|
||||
mysql.user.password=xxxxx
|
||||
mysql.user.name=root
|
||||
mysql.user.password=123456
|
@@ -16,11 +16,6 @@
|
||||
|
||||
package org.springframework.cloud.alibaba.cloud.examples;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Random;
|
||||
|
||||
import com.alibaba.fescar.core.context.RootContext;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
@@ -40,92 +35,97 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* @author xiaojing
|
||||
*/
|
||||
@RestController
|
||||
public class OrderController {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(OrderController.class);
|
||||
private static final String SUCCESS = "SUCCESS";
|
||||
private static final String FAIL = "FAIL";
|
||||
private static final String USER_ID = "U100001";
|
||||
private static final String COMMODITY_CODE = "C00321";
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(OrderController.class);
|
||||
private static final String SUCCESS = "SUCCESS";
|
||||
private static final String FAIL = "FAIL";
|
||||
private static final String USER_ID = "U100001";
|
||||
private static final String COMMODITY_CODE = "C00321";
|
||||
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
private final RestTemplate restTemplate;
|
||||
private Random random;
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
private final RestTemplate restTemplate;
|
||||
private Random random;
|
||||
|
||||
public OrderController(JdbcTemplate jdbcTemplate, RestTemplate restTemplate) {
|
||||
this.jdbcTemplate = jdbcTemplate;
|
||||
this.restTemplate = restTemplate;
|
||||
this.random = new Random();
|
||||
}
|
||||
public OrderController(JdbcTemplate jdbcTemplate, RestTemplate restTemplate) {
|
||||
this.jdbcTemplate = jdbcTemplate;
|
||||
this.restTemplate = restTemplate;
|
||||
this.random = new Random();
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/order", method = RequestMethod.POST, produces = "application/json")
|
||||
public String order(String userId, String commodityCode, int orderCount) {
|
||||
LOGGER.info("Order Service Begin ... xid: " + RootContext.getXID());
|
||||
@RequestMapping(value = "/order", method = RequestMethod.POST, produces = "application/json")
|
||||
public String order(String userId, String commodityCode, int orderCount) {
|
||||
LOGGER.info("Order Service Begin ... xid: " + RootContext.getXID());
|
||||
|
||||
int orderMoney = calculate(commodityCode, orderCount);
|
||||
int orderMoney = calculate(commodityCode, orderCount);
|
||||
|
||||
invokerAccountService(orderMoney);
|
||||
invokerAccountService(orderMoney);
|
||||
|
||||
final Order order = new Order();
|
||||
order.userId = userId;
|
||||
order.commodityCode = commodityCode;
|
||||
order.count = orderCount;
|
||||
order.money = orderMoney;
|
||||
final Order order = new Order();
|
||||
order.userId = userId;
|
||||
order.commodityCode = commodityCode;
|
||||
order.count = orderCount;
|
||||
order.money = orderMoney;
|
||||
|
||||
KeyHolder keyHolder = new GeneratedKeyHolder();
|
||||
KeyHolder keyHolder = new GeneratedKeyHolder();
|
||||
|
||||
int result = jdbcTemplate.update(new PreparedStatementCreator() {
|
||||
int result = jdbcTemplate.update(new PreparedStatementCreator() {
|
||||
|
||||
@Override
|
||||
public PreparedStatement createPreparedStatement(Connection con)
|
||||
throws SQLException {
|
||||
PreparedStatement pst = con.prepareStatement(
|
||||
"insert into order_tbl (user_id, commodity_code, count, money) values (?, ?, ?, ?)",
|
||||
PreparedStatement.RETURN_GENERATED_KEYS);
|
||||
pst.setObject(1, order.userId);
|
||||
pst.setObject(2, order.commodityCode);
|
||||
pst.setObject(3, order.count);
|
||||
pst.setObject(4, order.money);
|
||||
return pst;
|
||||
}
|
||||
}, keyHolder);
|
||||
@Override
|
||||
public PreparedStatement createPreparedStatement(Connection con)
|
||||
throws SQLException {
|
||||
PreparedStatement pst = con.prepareStatement(
|
||||
"insert into order_tbl (user_id, commodity_code, count, money) values (?, ?, ?, ?)",
|
||||
PreparedStatement.RETURN_GENERATED_KEYS);
|
||||
pst.setObject(1, order.userId);
|
||||
pst.setObject(2, order.commodityCode);
|
||||
pst.setObject(3, order.count);
|
||||
pst.setObject(4, order.money);
|
||||
return pst;
|
||||
}
|
||||
}, keyHolder);
|
||||
|
||||
order.id = (long) keyHolder.getKey();
|
||||
order.id = keyHolder.getKey().longValue();
|
||||
|
||||
if (random.nextBoolean()) {
|
||||
throw new RuntimeException("this is a mock Exception");
|
||||
}
|
||||
// if (random.nextBoolean()) {
|
||||
// throw new RuntimeException("this is a mock Exception");
|
||||
// }
|
||||
|
||||
LOGGER.info("Order Service End ... Created " + order);
|
||||
LOGGER.info("Order Service End ... Created " + order);
|
||||
|
||||
if (result == 1) {
|
||||
return SUCCESS;
|
||||
}
|
||||
return FAIL;
|
||||
}
|
||||
if (result == 1) {
|
||||
return SUCCESS;
|
||||
}
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
private int calculate(String commodityId, int orderCount) {
|
||||
return 2 * orderCount;
|
||||
}
|
||||
private int calculate(String commodityId, int orderCount) {
|
||||
return 2 * orderCount;
|
||||
}
|
||||
|
||||
private void invokerAccountService(int orderMoney) {
|
||||
String url = "http://127.0.0.1:18084/account";
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
||||
private void invokerAccountService(int orderMoney) {
|
||||
String url = "http://127.0.0.1:18084/account";
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
||||
|
||||
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
|
||||
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
|
||||
|
||||
map.add("userId", USER_ID);
|
||||
map.add("money", orderMoney + "");
|
||||
map.add("userId", USER_ID);
|
||||
map.add("money", orderMoney + "");
|
||||
|
||||
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(
|
||||
map, headers);
|
||||
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(
|
||||
map, headers);
|
||||
|
||||
ResponseEntity<String> response = restTemplate.postForEntity(url, request,
|
||||
String.class);
|
||||
}
|
||||
ResponseEntity<String> response = restTemplate.postForEntity(url, request,
|
||||
String.class);
|
||||
}
|
||||
}
|
||||
|
@@ -5,5 +5,5 @@ mysql.server.ip=127.0.0.1
|
||||
mysql.server.port=3306
|
||||
mysql.db.name=demo
|
||||
|
||||
mysql.user.name=xxxxx
|
||||
mysql.user.password=xxxxx
|
||||
mysql.user.name=root
|
||||
mysql.user.password=123456
|
@@ -5,5 +5,5 @@ mysql.server.ip=127.0.0.1
|
||||
mysql.server.port=3306
|
||||
mysql.db.name=demo
|
||||
|
||||
mysql.user.name=xxxxx
|
||||
mysql.user.password=xxxxx
|
||||
mysql.user.name=root
|
||||
mysql.user.password=123456
|
@@ -44,7 +44,7 @@
|
||||
|
||||
<!-- Apache Dubbo dependencies-->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<groupId>org.apache.dubbo</groupId>
|
||||
<artifactId>dubbo-dependencies-bom</artifactId>
|
||||
<version>${dubbo.version}</version>
|
||||
<type>pom</type>
|
||||
|
@@ -16,8 +16,7 @@
|
||||
*/
|
||||
package org.springframework.cloud.alibaba.dubbo.bootstrap;
|
||||
|
||||
import com.alibaba.dubbo.config.annotation.Reference;
|
||||
|
||||
import org.apache.dubbo.config.annotation.Reference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
@@ -95,7 +94,7 @@ public class DubboSpringCloudConsumerBootstrap {
|
||||
}
|
||||
|
||||
@FeignClient("${provider.application.name}")
|
||||
@DubboTransported
|
||||
@DubboTransported()
|
||||
public interface DubboFeignRestService {
|
||||
|
||||
@GetMapping(value = "/param")
|
||||
|
@@ -16,8 +16,7 @@
|
||||
*/
|
||||
package org.springframework.cloud.alibaba.dubbo.service;
|
||||
|
||||
import com.alibaba.dubbo.rpc.RpcContext;
|
||||
|
||||
import org.apache.dubbo.rpc.RpcContext;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.MediaType;
|
||||
@@ -48,7 +47,7 @@ import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON_VALUE;
|
||||
*
|
||||
* @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
|
||||
*/
|
||||
@com.alibaba.dubbo.config.annotation.Service(version = "1.0.0", protocol = {"dubbo", "rest"})
|
||||
@org.apache.dubbo.config.annotation.Service(version = "1.0.0", protocol = {"dubbo", "rest"})
|
||||
@RestController
|
||||
@Path("/")
|
||||
public class StandardRestService implements RestService {
|
||||
|
@@ -4,6 +4,7 @@ spring:
|
||||
main:
|
||||
allow-bean-definition-overriding: true
|
||||
|
||||
|
||||
# default disable all
|
||||
cloud:
|
||||
nacos:
|
||||
|
Reference in New Issue
Block a user