From e80a07c45dcb90d7269675dd7e1e4c61456fd29a Mon Sep 17 00:00:00 2001 From: pandaLIU <563883861@qq.com> Date: Thu, 18 Aug 2022 20:33:31 +0800 Subject: [PATCH 1/2] Fixed DtmMiddleware in GRPC --- app/Controller/TccGrpcController.php | 15 +++++++++++++++ config/autoload/dtm.php | 2 +- config/routes.php | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/Controller/TccGrpcController.php b/app/Controller/TccGrpcController.php index bdb9a8d..ade4342 100644 --- a/app/Controller/TccGrpcController.php +++ b/app/Controller/TccGrpcController.php @@ -11,12 +11,15 @@ use App\Grpc\GrpcClient; use App\Grpc\Message\BusiReply; use App\Grpc\Message\BusiReq; +use DtmClient\Annotation\Barrier; +use DtmClient\Middleware\DtmMiddleware; use DtmClient\TCC; use Hyperf\Contract\ConfigInterface; use Hyperf\Contract\StdoutLoggerInterface; use Hyperf\Di\Annotation\Inject; use Hyperf\HttpServer\Annotation\Controller; use Hyperf\HttpServer\Annotation\GetMapping; +use Hyperf\HttpServer\Annotation\Middleware; #[Controller(prefix: '/tcc-grpc')] class TccGrpcController @@ -65,31 +68,43 @@ public function successCase() return 'success'; } + #[Middleware(middleware: DtmMiddleware::class)] + #[Barrier] public function transOutTcc(BusiReq $request) { return new BusiReply(); } + #[Middleware(middleware: DtmMiddleware::class)] + #[Barrier] public function transOutConfirm(BusiReq $request) { return new BusiReply(); } + #[Middleware(middleware: DtmMiddleware::class)] + #[Barrier] public function transOutCancel(BusiReq $request) { return new BusiReply(); } + #[Middleware(middleware: DtmMiddleware::class)] + #[Barrier] public function transInTcc(BusiReq $request) { return new BusiReply(); } + #[Middleware(middleware: DtmMiddleware::class)] + #[Barrier] public function transInConfirm(BusiReq $request) { return new BusiReply(); } + #[Middleware(middleware: DtmMiddleware::class)] + #[Barrier] public function transInCancel(BusiReq $request) { return new BusiReply(); diff --git a/config/autoload/dtm.php b/config/autoload/dtm.php index fe7ee46..2f3fa64 100644 --- a/config/autoload/dtm.php +++ b/config/autoload/dtm.php @@ -10,7 +10,7 @@ use DtmClient\Constants\DbType; return [ - 'protocol' => Protocol::HTTP, + 'protocol' => Protocol::GRPC, 'server' => '127.0.0.1', 'port' => [ 'http' => 36789, diff --git a/config/routes.php b/config/routes.php index 7493e9d..b4a2b3c 100644 --- a/config/routes.php +++ b/config/routes.php @@ -18,6 +18,7 @@ Router::post('/TransInConfirm', 'App\Controller\TccGrpcController@transInConfirm'); Router::post('/TransInRevert', 'App\Controller\TccGrpcController@transInRevert'); }); +// , ['middleware' => [\DtmClient\Middleware\DtmMiddleware::class]] }); Router::addGroup('/tcc', function () { From 1baa82f44e21d32758ea4fd059c6065f8a2e5952 Mon Sep 17 00:00:00 2001 From: pandaLIU <563883861@qq.com> Date: Wed, 14 Dec 2022 22:21:01 +0800 Subject: [PATCH 2/2] Updated msg demo --- app/Controller/MsgController.php | 17 +++++++++++++++-- app/Listener/DbQueryExecutedListener.php | 4 +++- config/autoload/dtm.php | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/Controller/MsgController.php b/app/Controller/MsgController.php index e470f93..3054290 100644 --- a/app/Controller/MsgController.php +++ b/app/Controller/MsgController.php @@ -2,17 +2,20 @@ namespace App\Controller; +use DtmClient\Barrier; use DtmClient\Msg; use DtmClient\TransContext; use Hyperf\HttpServer\Annotation\Controller; use Hyperf\HttpServer\Annotation\RequestMapping; +use Hyperf\HttpServer\Contract\RequestInterface; +use Psr\Http\Message\ServerRequestInterface; #[Controller(prefix: '/msg')] class MsgController extends AbstractSagaController { private Msg $msg; - public function __construct(Msg $msg) + public function __construct(Msg $msg, private Barrier $barrier) { $this->msg = $msg; } @@ -22,10 +25,20 @@ public function msg() { $gid = $this->msg->generateGid(); TransContext::setGid($gid); - $this->msg->doAndSubmit('http_msg_doAndCommit', function () { + $this->msg->doAndSubmit($this->serviceUri . '/msg/queryPrepared', function () { $this->msg->add('test', ['name' => 'dtmMsg']); }); } + #[RequestMapping(path: 'queryPrepared')] + public function queryPrepared(RequestInterface $request): string + { + $queryParams = $request->query(); + $gid = $queryParams['gid']; + $transType = $queryParams['trans_type']; + + return $this->barrier->queryPrepared($transType, $gid); + } + } \ No newline at end of file diff --git a/app/Listener/DbQueryExecutedListener.php b/app/Listener/DbQueryExecutedListener.php index 701ebfd..48face7 100644 --- a/app/Listener/DbQueryExecutedListener.php +++ b/app/Listener/DbQueryExecutedListener.php @@ -8,6 +8,7 @@ */ namespace App\Listener; +use Hyperf\Contract\StdoutLoggerInterface; use Hyperf\Database\Events\QueryExecuted; use Hyperf\Event\Annotation\Listener; use Hyperf\Event\Contract\ListenerInterface; @@ -29,7 +30,8 @@ class DbQueryExecutedListener implements ListenerInterface public function __construct(ContainerInterface $container) { - $this->logger = $container->get(LoggerFactory::class)->get('sql'); +// $this->logger = $container->get(LoggerFactory::class)->get('sql'); + $this->logger = $container->get(StdoutLoggerInterface::class); } public function listen(): array diff --git a/config/autoload/dtm.php b/config/autoload/dtm.php index 2f3fa64..fe7ee46 100644 --- a/config/autoload/dtm.php +++ b/config/autoload/dtm.php @@ -10,7 +10,7 @@ use DtmClient\Constants\DbType; return [ - 'protocol' => Protocol::GRPC, + 'protocol' => Protocol::HTTP, 'server' => '127.0.0.1', 'port' => [ 'http' => 36789,