Redis 简易消息队列

Posted 欣欣点灯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 简易消息队列相关的知识,希望对你有一定的参考价值。

为了保持程序的高效,建议使用ProtoBuf.

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。

Net中使用也很简单,在NuGet 获取,使用特性标记即可,有点类似wcf中的契约.

    [ProtoContract]
    public class TestQuene
    {

        [ProtoMember(1)]
        public int Id
        {
            get;
            set;
        }

简单的队列队列入队与出队测试,效果还不错.

       for (int i = 0; i < 100; i++)
            {
                MemoryStream xmlw = new MemoryStream();
                TestQuene TempTest = new TestQuene() { Id = i, data = new List<string>(new string[] { "1", "2", "3" }) };
                Serializer.Serialize<TestQuene>(xmlw, TempTest);
                message = Convert.ToBase64String(xmlw.ToArray());
                Console.WriteLine("EnqueueItemOnList=" + message);
                redis.EnqueueItemOnList("MessageQuene", message);
            }
      ThreadPool.UnsafeQueueUserWorkItem(o =>
            {
                while (true)
                {
                    try
                    {
                        MemoryStream ms = new MemoryStream(Convert.FromBase64String(redis.BlockingPopItemFromList("MessageQuene", TimeSpan.FromHours(2))));

                        Console.WriteLine("while=" + Serializer.Deserialize<TestQuene>(ms));
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.ToString());
                    }
                }
            }, null);

 

以上是关于Redis 简易消息队列的主要内容,如果未能解决你的问题,请参考以下文章

一个Redis消息队列实现

一个Redis消息队列实现

一个Redis消息队列实现

后台消息队列处理简易框架

使用ActiveMQ实现简易聊天功能

秒杀系统如何防止超卖?