C#+redis实现消息队列的发布订阅功能

代码

参考c#+redis stream实现消息队列以及ack机制文章的思路,实现
SubscribeAttribute.cs

using System;

namespace DotnetQueue.Attributes
{
   
   
    /// <summary>
    /// 订阅特性
    /// </summary>
    [AttributeUsage(AttributeTargets.Method, Inherited = false)]
    public class SubscribeAttribute : Attribute
    {
   
   
        /// <summary>
        /// 订阅的名称
        /// </summary>
        public string Name {
   
    get; }

        /// <summary>
        /// 构造函数注入
        /// </summary>
        /// <param name="name"></param>
        public SubscribeAttribute(string name)
        {
   
   
            Name = name;
        }

        /// <summary>
        /// 构造函数注入
        /// </summary>
        /// <param name="name"></param>
        public SubscribeAttribute(string name, string groupName, string consumerName)
        {
   
   
            Name = name;
            GroupName = groupName;
            ConsumerName = consumerName;
        }

        /// <summary>
        /// 群组名称
        /// </summary>
        public string GroupName {
   
    get; private set; } = "group01";

        /// <summary>
        /// 消费者名称
        /// </summary>
        public string ConsumerName {
   
    get; private set; } = "consumer01";
    }
}

新建SubscribeMethod.cs

using System;
using System.Reflection;

namespace DotnetQueue
{
   
   
    /// <summary>
    /// 订阅的方法
    /// </summary>
    public class SubscribeMethod
    {
   
   
        /// <summary>
        /// 类的类型
        /// </summary>
        public Type ClassType {
   
    get; set; }

        /// <summary>
        /// 方法
        /// </summary>
        public MethodInfo MethodInfo {
   
    get; set; }
    }
}

新建DotnetQueueCore.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using FreeRedis;
using DotnetQueue.Attributes;

namespace DotnetQueue
{
   
   
    /// <summary>
    /// 消息队列核心
    /// </summary>
    public class DotnetQueueCore
    {
   
   
        private readonly CancellationToken cancellationToken;
        private readonly IRedisClient redisClient;

        /// <summary>
        /// 构造函数注入
        /// &l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假装我不帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值