Мое приложение состоит из двух компонентов. Одним из них является процесс уведомлений (Notifier), который выполняется на медиа-сервере и публикует сообщение с помощью NServiceBus при изменении файла. Второе - это веб-приложение MVC (PhotoWeb), которое подписывается на эти сообщения для аннулирования кэша и т. Д.
Я настраиваю промежуточную среду для QA, и проблема в том, что приложение PhotoWeb, работающее в промежуточной среде, получает уведомления как от промежуточного медиа-сервера, так и от живого медиа-сервера - что неожиданно и немного странно ...
Экземпляр PhotoWeb, развернутый в рабочей среде, имеет следующую конфигурацию:
<MsmqTransportConfig InputQueue="PhotoWebInputQueue" ErrorQueue="PhotoWebErrorQueue" NumberOfWorkerThreads="1" MaxRetries="5" />
<UnicastBusConfig>
<MessageEndpointMappings>
<clear/>
<!-- Where do we subscribe to messages about filesystem changes? -->
<add Messages="MyProject.Messages" Endpoint="NotifierInputQueue@webmedia"/>
</MessageEndpointMappings>
</UnicastBusConfig>
и конфигурация в промежуточной среде:
<MsmqTransportConfig InputQueue="PhotoWebInputQueue" ErrorQueue="PhotoWebErrorQueue" NumberOfWorkerThreads="1" MaxRetries="5" />
<UnicastBusConfig>
<MessageEndpointMappings>
<clear/>
<!-- Where do we subscribe to messages about filesystem changes? -->
<add Messages="MyProject.Messages" Endpoint="NotifierInputQueue@staging_media"/>
</MessageEndpointMappings>
</UnicastBusConfig>
На ум приходит пара теорий:
- Я неправильно понял, что такое очередь на самом деле - и
PhotoWebInputQueue
на самом деле является общим сетевым ресурсом, а не очередью, локальной для определенного сервера
- При предыдущем развертывании NServiceBus подписывался на оперативную очередь веб-мультимедиа на промежуточном веб-сервере, и эта подписка сохраняется при перезапусках и т. Д.
Однако мой NServiceBus-fu недостаточно силен, чтобы знать, как проверить любую из этих теорий. Что-то явно не так с этой конфигурацией или архитектурой, которую вы видите?
Спасибо
Dylan