C# RabbitMQ能告诉我一条消息被传递了多少次吗?

C# RabbitMQ能告诉我一条消息被传递了多少次吗?,c#,rabbitmq,message-queue,C#,Rabbitmq,Message Queue,我正在使用RabbitMQ队列中的一些消息 我对消息的消耗可能会很小,因此如果失败,我希望重试 我的处理程序代码看起来有点像这样 ........ var handlers = new GetHandlers(); try { handlers.Handle<T>(output); //log handled

我正在使用RabbitMQ队列中的一些消息

我对消息的消耗可能会很小,因此如果失败,我希望重试

我的处理程序代码看起来有点像这样

            ........
            var handlers = new GetHandlers();
            try
            {
                handlers.Handle<T>(output);
               //log handled
            }
            catch (Exception ex)
            {
                //log fail
                channel.BasicNack(ea.DeliveryTag, false, true);
                return;
            }


            channel.BasicAck(ea.DeliveryTag, false);
            // Log all good.
        };
。。。。。。。。
var handlers=new GetHandlers();
尝试
{
句柄(输出);
//原木处理
}
捕获(例外情况除外)
{
//日志失败
channel.BasicNack(ea.DeliveryTag,false,true);
返回;
}
channel.BasicAck(ea.DeliveryTag,false);
//日志都很好。
};
消息上有一个
Redelivered=true/false
属性,但是该属性不能提供足够的信息,让我知道我以前见过此消息多少次


有没有办法让Rabbit设置发送尝试的次数?

当前版本中没有。但是,您可以将此信息作为标题重新发布邮件。或者,您可以使用某种分布式内存缓存(想想memcached或Couchbase)来存储此状态信息


从体系结构的角度来看,应用程序的行为不应因消息的尝试次数而异。如果您的应用程序由于格式错误而无法处理它,它应该立即拒绝它。如果存在临时条件,则在该条件得到解决之前,不应使用消息。显然,每一条规则都有例外

这方面存在一个未决问题:。所以我要说不-在当前版本中是不可能的。