ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-使用Servicestack在RabbitMQ队列上设置TTL

2019-11-11 18:19:16  阅读:355  来源: 互联网

标签:rabbitmq ttl servicestack c


I have read,可以在RabbitMQ(每个队列)上设置生存时间(TTL),以便如果TTL过期,RabbitMQ服务器将从队列中清除消息,并且服务器将保证消息具有过期的TTL将不会被处理.

我正在使用service stack to connect to various rabbitMq’s;特别是我用它来充当RabbitMQ提供的RPC功能的基础,并且效果很好.

我无法找到任何信息(也正在查看代码-支持)来声明队列时设置队列的TTL.据我所知,队列的创建被埋在Service Stack实现中-该实现抽象了很多队列详细信息以提供简化的服务抽象,而与传输层无关.

是否有可能这样做(使用服务栈在Rabbit MQ上设置TTL)-还是将来有可能这样做?

解决方法:

我添加了一个过滤器,该过滤器可让您自定义创建Rabbit MQ队列和主题的选项,并可以使用新的CreateQueueFilter指定这些选项,例如:

container.Register<IMessageService>(c => 
    new RabbitMqServer(ConnectionString)
    {
        CreateQueueFilter = (queueName, args) =>
        {
            if (queueName == QueueNames<MyRequest>.In)
            {
                args["x-message-ttl"] = 60000;
            }
        }
    });

此更改可从v4.5.7(现在为available on MyGet)获得.

标签:rabbitmq,ttl,servicestack,c
来源: https://codeday.me/bug/20191111/2021590.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有