Функция обратного вызова WCF MSMQ - PullRequest
3 голосов
/ 28 мая 2009

У меня есть система, которая отправляет объект в другую службу через WCF, используя MSMQ. Служба хорошо принимает сообщение и делает с ним все, что нужно. Но сейчас у меня проблема в том, что мне нужно отправить ответ вызывающей системе.
Пример:

  1. Создать объект Customer
  2. Заполните информацию
  3. Отправить сообщение в службу с помощью WCF через MSMQ
  4. Забрать сообщение из очереди, используя службу Windows
  5. Вызовите метод Customer.Insert () в службе Windows
  6. Теперь мне нужно отправить новый идентификатор клиента обратно в приложение для вызова здесь.

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 28 мая 2009

Как отмечает Эммануэль - сообщения MSMQ являются односторонними, и на самом деле не имеют ответа.

Лучшим решением было бы иметь очередь ответов, в которую "другая служба" может перенаправлять свои сообщения ответа. Затем ваш клиент должен будет отслеживать эту очередь, например, проверяйте его время от времени (каждую минуту, каждые 30 минут - все, что имеет смысл для вас) на наличие новых сообщений и обрабатывайте их.

Дуплексных (двусторонних) каналов MSMQ нет, но вы можете легко создать пару отдельных очередей для обоих направлений.

Марк

3 голосов
/ 12 сентября 2009

вы можете использовать дуплексную связь с MSMQ, но не изначально, посмотрите мою статью

1 голос
/ 28 мая 2009

Работа MSMQ требует одностороннего подхода, единственный способ, которым я могу думать о получении сообщения, - это то, чтобы ваше вызывающее приложение также размещало службу для ответов, так как нет дуплексной привязки MSMQ.

...