Проблема задержки сообщения шины NService - PullRequest
1 голос
/ 21 сентября 2010

Вчера я сделал производственный симулятор.Результаты, где не хорошо.Соединение между двумя серверами в порядке.Время от времени происходит огромная задержка, около 5-10 минут.Я отправляю сообщение два, три .. двадцать, а другая сторона не получает их.И затем бум, все сообщения есть, и ответ отправляется отправителю.Другая ситуация, когда я отправляю 10 сообщений, другая сторона получает их на мгновение и отвечает.Но ответы не получены отправителем.Через 5-10 минут БУМ, ответы здесь.

Что происходит?Пожалуйста, помогите мне.

====================
РЕДАКТИРОВАТЬ: Оба сервера Windows XP sp3.Оба компьютера связаны с openVPN.NSB является последней версией.

UI <= <em>duplex => сервер приложений <= <em>публикация / подписка => Денормализатор (база данных только для чтения)

Вчера я тестировал только дуплекс.В среде 1PC все идет гладко.Когда дуплекс будет готов, я протестирую третью часть.

1 Ответ

0 голосов
/ 22 октября 2010

Вы используете активный каталог? Я помню, что читал, что AD может вызвать проблемы с MSMQ. Что-то похожее на некоторые таблицы поиска, огромные и замедляющие ... Во всяком случае, точно не помню, только мысль.

В противном случае я предлагаю начать с обеих конечных точек на 1 компьютере и работать оттуда. Медленно добавляйте переменные, пока они снова не сломаются.

РЕДАКТИРОВАТЬ: Попробуйте добавить эту строку в вашу конфигурацию:

.RunCustomAction(() => NServiceBus.Configure.Instance.Configurer.ConfigureProperty<MsmqTransport>(
                    mt => mt.SecondsToWaitForMessage, 2))

Я не уверен, как вы настроите это, если используете хост. Мой конфиг выглядит так:

    _Bus = NServiceBus.Configure.With()
                  .DefaultBuilder()
                  .Log4Net(new MyLogAppender())
                  .XmlSerializer()
                  .MsmqTransport()
                      .IsTransactional(true)
                      .PurgeOnStartup(true)
                  .UnicastBus()
                      .ImpersonateSender(false)
                      .DoNotAutoSubscribe()
                      .LoadMessageHandlers()
                  .RunCustomAction(() =>
                    NServiceBus.Configure.Instance.Configurer.ConfigureProperty<MsmqTransport>(
                    mt => mt.SecondsToWaitForMessage, 2))
                  .CreateBus()
                  .Start();

У меня возникла проблема, из-за которой мои очереди MSMQ регулярно блокируются, что приводит к задержке. Однако время ожидания по умолчанию только в секундах (15 секунд iirc?). Никогда не мог понять, почему это происходит, я думаю, что это что-то смешное в библиотеках MSMQ. Я действительно сомневаюсь, что та же самая проблема вызовет 10 минут + задержки, но это стоит попробовать.

...