当前位置:网站首页>NetCore结合CAP事件总线实现分布式事务——消息(2)

NetCore结合CAP事件总线实现分布式事务——消息(2)

2022-06-12 14:18:00 有诗亦有远方

一、CAP 中的自定义配置

配置详细地址

  1. DefaultGroupName
默认值:cap.queue.{
    程序集名称}
  1. TopicNamePrefix
为 Topic 统一添加前缀。 https://github.com/dotnetcore/CAP/pull/780
  1. Version
默认值:v1

这是在CAP v2.4 版本中引入的新配置项,用于给消息指定版本来隔离不同版本服务的消息,常用于A/B测试或者多服务版本的场景
  1. FailedRetryInterval

默认值:60 秒

在消息发送的时候,如果发送失败,CAP将会对消息进行重试,此配置项用来配置每次重试的间隔时间
  1. SucceedMessageExpiredAfter
默认值:24*3600 秒(1天后)

成功消息的过期时间(秒)。 当消息发送或者消费成功时候,在时间达到 SucceedMessageExpiredAfter 秒时候将会从 Persistent 中删除,你可以通过指定此值来设置过期的时间。

二、补偿事务

某些情况下,消费者需要返回值以告诉发布者执行结果,以便于发布者实施一些动作,通常情况下这属于补偿范围。
你可以在消费者执行的代码中通过重新发布一个新消息来通知上游,CAP 提供了一种简单的方式来做到这一点。 你可以在发送的时候指定 callbackName 来得到消费者的执行结果,通常这仅适用于点对点的消费

1.发布

1.发布者,发布路由键为angel消息
2.收到发布的订阅者,处理消息
3.返回处理结果
4.发布者,调用回调函数来
5.发布消息,路由键为,image
6.订阅者image,收到发布,处理消息

  _capBus.Publish("angel", contentObj: new Person {
     Id = 1, Name = "11" },callbackName:"image");
[NonAction]
        [CapSubscribe("angel")]

        public Person ReceiveMsg(Person str)
        {
    
            if(str!=null)
            {
    
                Console.WriteLine($"接收{
      str.Id}");
                _log.LogInformation($"我是订阅者,收到的内容为:{
      str.Id},{
      str.Name}");
                //处理完的结果,返回回去
                return str;
            }
            throw new Exception();
        }
 [NonAction]
        [CapSubscribe("image")]
        public void CallBackMsg(Person str)
        {
    
        
            if(str!=null)
            {
    
                Console.WriteLine($"回调{
      str.Id}");
                _log.LogInformation($"我是回调,回调的内容为:{
      str.Id},{
      str.Name}");
            }
            
        }
原网站

版权声明
本文为[有诗亦有远方]所创,转载请带上原文链接,感谢
https://blog.csdn.net/wsnbbdbbdbbdbb/article/details/125232382