Redis实现消息队列比MSMQ更方便-创新互联
什么是队列:简单的说就是数据存储到一个空间里(可以是内存,也可以是物理文件),先存储的数据对象,先被取出来,这与堆栈正好相反,消息队列也是这样,将可能出现高并发的数据进行队列存储,并按着入队的顺序依次处理,实现消息队列的工具有很多,如微软的MSMQ,及一些开源的KV存储工具,今天主要介绍用Redis实现消息队列。
噶尔网站建设公司创新互联,噶尔网站设计制作,有大型网站制作公司丰富经验。已为噶尔超过千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的噶尔做网站的公司定做!这是我的redis项目结构
redis服务有一个console的程序,可以支持在windows和linux下运行。
我用MVC应用程序来作这个例子,由表单向内存中写信息,然后每5秒中从内存中将消息取出来,看代码
///
/// 消息对象类型
///
public class MessageQuene
{
static System.Timers.Timer timer = new System.Timers.Timer(5000);
public static ChatModels CurrentChatModels = new ChatModels();
static Redis.Utils.RedisClient redisClient;
static MessageQuene()
{
redisClient = new Redis.Utils.RedisClient();
timer.AutoReset = true;
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);//subscribe a event
timer.Start();
}
private static void timer_Elapsed(object sender, ElapsedEventArgs e)
{
CurrentChatModels = (ChatModels)redisClient.LeftPop("MessageQuene");
}
}
前台显示的action
public ActionResult Index()
{
ViewData["pop"] = MessageQuene.CurrentChatModels == null ? "没?有D记?录?" : MessageQuene.CurrentChatModels.Chat;
ViewData["MSMQ"] = redisClient.ListRange("MessageQuene") == null
? new List()
: redisClient.ListRange("MessageQuene").Cast().ToList();
}
表单提交的action
事件上,如果我们在项目中用到消息队列时,可以直接使用ViewData["pop"]
这个对象,它就是当前取出的队列元素,我们可以对它进行数据操作等。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
当前文章:Redis实现消息队列比MSMQ更方便-创新互联
转载源于:http://scgulin.cn/article/dscegi.html