Можно ли настроить конечную точку для выполнения работником, получающего задания от дистрибьютора И подписываться на какие-то сообщения?Конфигурирование конечной точки для работы как рабочего, так и подписчика
У меня есть следующий сценарий (адаптированный к продаже терминологии)
*) центральный отдел публикует каждый сейчас, а затем список новых цен. Все работники должны быть уведомлены. Это означает, что работник должен подписаться на это событие.
*), когда новый заказ поступает в центр, он отправляет его дистрибьютору, который отправляет его следующему незанятому работнику, который должен быть обработан. Это означает, что работник должен быть настроен на получение сообщений от дистрибьютора. Я использую следующую конфигурацию:
<MsmqTransportConfig
InputQueue="worker"
ErrorQueue="error"
NumberOfWorkerThreads="2"
MaxRetries="5"
/>
<UnicastBusConfig
DistributorControlAddress="distributorControlBus"
DistributorDataAddress="distributorDataBus" >
<MessageEndpointMappings>
<add Messages="Events" Endpoint="messagebus" />
</MessageEndpointMappings>
</UnicastBusConfig>
Когда я устанавливаю его только в качестве работника или только как подписчик все работает, как ожидалось, но не тогда, когда я устанавливаю его как оба.
Я обнаружил, что сообщение поступило в очередь ввода центрального адреса с адресом дистрибьютора в качестве адреса возврата вместо адреса рабочего места, и издатель не признает в этом случае абонента. Любые идеи? Заранее спасибо.
Вот как я делаю это прямо сейчас. Прейскурант прилагается к сообщению заказа. Мое намерение состояло в том, чтобы разделить сообщения и запасную полосу пропускания. Если это не сработает, я могу рассмотреть возможность отправки метки времени текущего прейскуранта и позволить работнику запросить его из центра с использованием Bus.Reply(). Но это также означает, что я должен постоянно сохранять сообщения до получения ответа. – Mouk
Любые другие способы? Необходимые нам данные чрезвычайно тяжелые и не могут быть переданы по кабелю. – theGecko
TheGecko, мы рассматриваем объединение в шину данных для передачи большего количества данных. –