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

一、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}");
            }
            
        }
posted @   有诗亦有远方  阅读(31)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示