Время ожидания сообщения NServiceBus с timeToReachQueue

Я пытаюсь установить тайм-аут для сообщения, чтобы прибыть в очередь, используя MSMQTransportProtocol в NServiceBus.

Я прочитал это: 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");

Что мне здесь не хватает?

1 ответ

Я пытаюсь установить тайм-аут для сообщения, чтобы прибыть в очередь

Дело в том, что даже если сообщение поступит в очередь в течение этого периода времени (из-за проблем с сетью), оно вполне может оказаться в этой очереди в течение длительного времени (возможно, из-за сбоя кода обработки).

Я думаю, что TimeToBeReceived - это то, что вы ищете. Смотрите эту предыдущую тему:

Время установки NServiceBus для получения

О чем идет речь в документации, когда говорится This sets the underlying Message.TimeToReachQueue это свойство TimeToReachQueue сообщения MSMQ (как описано в ссылке), а не свойство вашего собственного объекта сообщения.

Другие вопросы по тегам