Как откатить транзакцию в микросервисе? - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь построить систему, создавая базу микросервисов на spring-cloud .См (https://spring.io/blog/2015/07/14/microservices-with-spring)Я обновляю что-то новое:

приложение 1: (http://localhost:3333/accounts)Тело запроса:

{
    "id":"123",
    "number":"223",
    "owner":"888",
    "balance":"100"
}

-WebAccountsController.java

 @PostMapping(value = "/accounts")
        public void insertAccount(@RequestBody Account account){
            accountsService.createAccount(account);
        }

-WebAccountsService.java

@Transactional(rollbackFor = NullPointerException.class)
    public void createAccount(Account account) {
        try {
            account.setOwner(account.getOwner()+System.currentTimeMillis()%1000);
            HttpEntity<Account> request = new HttpEntity<Account>(account);
            System.out.println("==================="+account.getOwner());
            String url=serviceUrl + "/create-accounts";
            ResponseEntity<String> response = restTemplate.postForEntity( url, request , String.class );
            String s = null;
            s.equalsIgnoreCase("asa");
        } catch (NullPointerException e) {
            throw e;
        }

    }

приложение 2: ((http://localhost:2222/create-accounts)

-AccountsController.java

@PostMapping(value = "/create-accounts")
    @Transactional(rollbackFor = Exception.class)
    public void createAccount(@RequestBody Account account) throws Exception {
        try {
            logger.info("========================================================= " + account.getOwner());
            accountRepository.save(account);
            logger.info("accounts-service byNumber() found: " + account);
        } catch (Exception e) {
            throw e;
        }
    }

Как выполнить откат данных в тестовом случае, еслиесть исключение?в WebAccountsService.java (приложение 1) после вызова веб-приложения 2 API произошло исключение.Как я могу откатить результат от вызова api create-account, который принадлежит application2 (запись, созданная в предыдущем процессе, будет удалена)?У тебя тоже попробуй запустить (https://github.com/haipv2/microservices-demo-master)
Спасибо !!!

...