2012-06-04 6 views
2

У меня есть приложение C# с использованием nms.activemq 1.5.0.ActiveMQ NMS: connection.start() зависает с протоколом отказоустойчивости, когда брокер не работает

Когда мое приложение запускается, он пытается подключиться к брокеру с использованием протокола восстановления после сбоя (у меня есть два брокера в конфигурации ведущий-ведомый).
Если оба брокера вниз по моему приложению застряли в ожидании из-за connection.start().
Я пробовал каждый бит информации, которую я нашел в Интернете, - я пробовал каждый атрибут протокола отказоустойчивости, также пытался установить таймаут соединения, попробовал transport.requesttimeout.

Я также пробовал более новую версию nms.activemq, но ничто, кажется, не решает проблему.

Любая идея о том, что может вызвать эту проблему или любое обходное решение?

+0

Это очень странно, но в версии 1.5.5 он висит (используя режим отказоустойчивый) даже на ** connection.ClientId ** присвоение имущества, что считается анти-шаблонов в .NET, потому что свойства должны представлять собой простые, быстрые, неблокирующие операции. – sgnsajgon

ответ

8

После добычи результатов Google ¯Fi найдено this thread

Тим Bish ответил разработчик там, что в NMS есть префикс транспорт. *, что нужно добавлять ко всем транспортным свойствам.

мой оригинальный Ури:

failover://(tcp://A,tcp://B)?randomize=true&startupMaxReconnectAttempts=1&timeout=2000 

и теперь мой URI является (. Обратить внимание на транспорта * префикс):

failover://(tcp://A,tcp://B)?transport.randomize=true&transport.startupMaxReconnectAttempts=1&transport.timeout=2000 

, который работает, и я обрабатывать исключение брошено и продолжайте с моим приложением.

Наслаждайтесь

+0

Если бы я мог дать вам 20 upvotes я бы! – thudbutt