2015-08-17 5 views
0

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

Я прочел следующее: 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 setting time to be received

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

+0

Спасибо. Я попробую. Как насчет этой новой настройки в документах? Я понял это неправильно? – developer82

+0

Обновлен мой ответ –

Смежные вопросы