dtm-php / dtm-client

A PHP coroutine client for distributed transaction manager DTM. 分布式事务管理器 DTM 的 PHP 协程客户端

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SAGA模式在补偿操作中如何实现空补偿,官方的call方法如何正确使用??

aen516954023 opened this issue · comments

SAGA模式在补偿操作中如何实现空补偿,官方的call方法如何正确使用??

加上 #[Barrier] 这个注解

加上 #[Barrier] 这个注解

以下方法: 我在add每个方法中加上#[Barrier]注解后, 如果transInError报错,transOutCompensate 没有做补偿,transOut方法已经扣减了
public function rollbackCase(Saga $saga)
{
$this->initAccountAmount(200);
$payload = ['money'=>50];
$saga->init();
$saga->add($this->serviceUri . '/transOut', $this->serviceUri . '/transOutCompensate', $payload);
$saga->add($this->serviceUri . '/transInError', $this->serviceUri . '/transInCompensate', $payload);
$saga->submit();
return 'Submitted'.TransContext::getGid(); // 全局事务id
}

这里的状态码需要改成409进行返回