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进行返回