闽公网安备 35020302035485号
using ( var client = new RemoteClient(gatewayAddrs))
{
//标识后面的调用需要启用分布式事务控制
client.BeginTransaction();
//获取服务接口
var accountService = await client.GetMicroServiceAsync("UserAccountService");
var giftService = await client.GetMicroServiceAsync("UserAccountService");
//扣除指定用户100积分
accountService.InvokeAsync("UseMemberPoints", userid , 100 );
//把某个礼品赠予指定用户
var ret = await giftService.InvokeAsync<GiftResult>("GiveGiftToUser", giftid, userid);
if(ret.GiftsReceivedCount > 10)
{
//如果累计收取礼品大于10个,升级用户vip等级
accountService.InvokeAsync("UpgradeVip" , userid);
}
//提交分布式事务
await client.CommitTransactionAsync();
}
这是一段调用几个微服务的代码,功能是:扣除用户100积分,同时把一个礼品转给这个用户,如果发现此用户累计已经兑换超过10个礼品,那么提升此用户的vip等级。代码很简单,看不出有什么问题,并且上面所调用的三个接口函数,也都是通过了单元测试。但运行后却发现卡死在client.CommitTransactionAsync()。