hyperf / hyperf/hyperf

[QUESTION] 微服务 分布式事务 回滚没有生效 只能用http调用

Offen
#7,564 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
question
Vorherrschende Sprache
PHP
Sterne
6.9k
Forks
1.3k
Ø Merge
4 Std. 21 Min.
Gemergte PRs (30 T.)
4

Beschreibung

## Before you submit an issue, please be sure to search through existing issues as well as search through the [documentation](https://hyperf.wiki)
- [] I've searched all existing issues
- [] I've read all relevant documentation I could find

### Describe your question
调用外部服务
```php
xa->generateGid();
try {
$this->xa->globalTransaction($gid, function () use (&$res) {
$this->xa->callBranch(self::SERVICE_URI . '/RpcOrderServiceInterface/createTest', []);
$this->xa->callBranch(self::SERVICE_URI . '/RpcOrderServiceInterface/createTestError', []);
});
} catch (\Throwable $th) {
throw $th;
}
return $res;
}
}
```
路由
```php
createTest();
});
Router::post('/createTestError', function (RpcOrderServiceInterface $rpcOrderService) {
return $rpcOrderService->createTestError();
});
});
});
```
上面的写法测试了没有生效

不支持写成这样的 不能直接用rpc服务调用 只能用http请求 有什么好的办法吗
```php
$this->xa->globalTransaction($gid, function () use (&$res) {
// $this->xa->callBranch(self::SERVICE_URI . '/RpcOrderServiceInterface/createTest', []);
// $this->xa->callBranch(self::SERVICE_URI . '/RpcOrderServiceInterface/createTestError', []);
$this->xa->callBranch($this->rpcOrderService->createTest());
$this->xa->callBranch($this->rpcOrderService->createTestError());
});
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne bei OrderService::createOrder und verfolge die im Issue gezeigten Aufrufe von XA::globalTransaction und XA::callBranch. Vergleiche dabei die HTTP-Routen-Handler mit den direkten Aufrufen von RpcOrderServiceInterface. Reproduziere das Rollback-Verhalten und ermittle, ob direkte RPC-Aufrufe unterstützt werden; die Aufgabe ist abgeschlossen, wenn der unterstützte Aufrufpfad und das daraus resultierende Rollback-Verhalten klar sind und entweder ein fokussierter Test oder eine dokumentierte Einschränkung vorliegt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
backend, distributed-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.