我正在尝试使用NServiceBus中的MSMQTransportProtocol设置消息到达队列的超时时间。
我读过这个:http://docs.particular.net/nservicebus/msmq/connection-strings并试图实现timeToReachQueue
属性(根据我的理解)。
我所做的是在我的消息中添加TimeToReachQueue
属性:
public class PlaceOrder : IMessage
{
[MessagingDescription("MsgTimeToReachQueue")]
public TimeSpan TimeToReachQueue { get; set; }
public Guid Id { get; set; }
public string Product { get; set; }
}
在发送邮件的客户端中,我已将以下内容放在app.config
:
<connectionStrings>
<add name="NServiceBus/Transport"
connectionString="deadLetter=true;
journal=true;
useTransactionalQueues=true;
cacheSendConnection=true;
timeToReachQueue=01:01:01"/>
</connectionStrings>
我尝试了不同的时间戳值 - 基本上我正试图让消息到达的时间不可能 - 我故意希望它超时。
但是无论我在连接字符串中设置什么值,它似乎都不适用。消息总是成功到达,如果我在调试中检查timeToReachQueue
属性,我看到所有值都为零 - 而不是我尝试设置的值。
我甚至在我的EndpointConfig中尝试了以下内容:
configuration.UseTransport<MsmqTransport>().ConnectionStringName("NServiceBus/Transport");
我在这里缺少什么?
答案 0 :(得分:1)
我试图设置邮件到达队列的超时时间
问题是,即使消息在该时间范围内到达队列(由于网络问题),它很可能最终会在该队列中停留很长时间(可能是由于处理代码已关闭)。 / p>
我认为TimeToBeReceived是您正在寻找的东西。见前一个帖子:
NServiceBus setting time to be received
当文档说This sets the underlying Message.TimeToReachQueue
是MSMQ消息的TimeToReachQueue属性(如链接中所述)而不是您自己的消息对象上的属性时,文档所讨论的是什么。