php 打开网站,wordpress修改分类标题,网络服务提供者知道或者应当知道,博物馆展陈公司排名为了防止并发对数据修改造成差异#xff0c;dapr使用了etag标签来作为版本号#xff0c;对数据修改进行验证。下面是对etag的一个demoappsettings.json中的url配置StateUrl: http://localhost:3500/v1.0/state/statestore在PaymentSystem项目中添加两… 为了防止并发对数据修改造成差异dapr使用了etag标签来作为版本号对数据修改进行验证。下面是对etag的一个demoappsettings.json中的url配置StateUrl: http://localhost:3500/v1.0/state/statestore在PaymentSystem项目中添加两个action[HttpPost(/writekeyswithetag)]public async TaskIActionResult WriteKeysWithEtag([FromBody] KeyEntityWithEtag[] keys){var client _clientFactory.CreateClient();var jsonContent System.Text.Json.JsonSerializer.Serialize(keys);var content new StringContent(jsonContent);var response await client.PostAsync(_stateUrl, content);return Ok(await response.Content.ReadAsStringAsync());}[HttpGet(/readekeywithetag/{key})]public async TaskIActionResult ReadKeyWithEtag(string key){var client _clientFactory.CreateClient();var response await client.GetAsync(${_stateUrl}/{key}); var dataString await response.Content.ReadAsStringAsync();var data (string.IsNullOrEmpty(dataString) ? null : System.Text.Json.JsonSerializer.DeserializeOrderPayment(dataString));return new JsonResult(new { result true, data new { data data, etag response.Headers.SingleOrDefault(s s.Key.ToLower() etag) }, host Dns.GetHostName() });}实体类public class OrderPayment
{public string PayOrder { get; set; }public decimal PayTotal { get; set; }public string PayType { get; set; }public DateTime PayTime { get; set; }
}
public class KeyEntityWithEtag
{public string Key { get; set; }public OrderPayment Value { get; set; }public string Etag { get; set; }
}docker-compose.ymlversion: 3.4services:#┌─────────────────────────┐#│ Dapr placement1 service │#└─────────────────────────┘ placement:image: daprio/daprcommand: [./placement, -port, 50006]ports:- 50006:50006networks:- b2c-dapr#┌────────────────────┐#│ Redis1 state store │#└────────────────────┘ redis:image: redis:latestports:- 6380:6379networks:- b2c-dapr#┌───────────────────────────────────┐#│ paymentsystem1 app Dapr sidecar │#└───────────────────────────────────┘ paymentsystem1:image: ${DOCKER_REGISTRY-}paymentsystemdepends_on:- redis- placementbuild:context: ../dockerfile: /PaymentSystem/Dockerfileports:- 3601:3500volumes: - ../PaymentSystem:/PaymentSystem networks:- b2c-dapr paymentsystem1-dapr:image: daprio/daprd:latestcommand: [ ./daprd, -app-id, pay, -app-port, 80,-placement-host-address, placement:50006,-components-path,/components ]build:context: ../depends_on:- paymentsystem1network_mode: service:paymentsystem1volumes: - ../components:/components #┌───────────────────────────────────┐#│ paymentsystem2 app Dapr sidecar │#└───────────────────────────────────┘ paymentsystem2:image: ${DOCKER_REGISTRY-}paymentsystemdepends_on:- redis- placement build:context: ../dockerfile: /PaymentSystem/Dockerfilevolumes: - ../PaymentSystem:/PaymentSystem ports:- 3602:3500networks:- b2c-dapr paymentsystem2-dapr:image: daprio/daprd:latestcommand: [ ./daprd, -app-id, pay, -app-port, 80 ,-placement-host-address, placement:50006,-components-path,/components]build:context: ../depends_on:- paymentsystem2network_mode: service:paymentsystem2volumes: - ../components:/components
networks:b2c-dapr:提交带有etag标签的数据多提交几次可以把etag顶起来查看etag为非1这时再次提交就会报错如果另外的服务更新了这个值本次提交就会失败需要再次查询后更新或作别的业务逻辑处理。