0

我正在尝试使用 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");

我在这里想念什么?

4

1 回答 1

1

我正在尝试为消息到达队列设置超时

问题是,即使消息在该时间范围内到达队列(由于网络问题),它也很可能最终在该队列中停留很长时间(可能是由于处理代码关闭)。

我认为 TimeToBeReceived 是您正在寻找的。请参阅上一个线程:

NServiceBus 设置接收时间

文档所说This sets the underlying Message.TimeToReachQueue的是 MSMQ 消息的 TimeToReachQueue 属性(如链接中所述)而不是您自己的消息对象上的属性。

于 2015-08-18T06:33:54.703 回答