совокупный шаблон обмена сообщениями - PullRequest
0 голосов
/ 15 декабря 2011

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

Сценарий состоит в том, что у меня есть издатель, который отвечает за публикацию пользовательских обновлений, выполняемых в системе. Мои нисходящие системы являются подписчиками этих обновлений.

Проблема, с которой я сталкиваюсь, заключается в том, что пользователи вышестоящей системы регулярно сохраняют свою работу. Причина, по которой они это делают, заключается в том, что одно «логическое» обновление на самом деле включает в себя переход многих экранов, плюс для них также вполне естественно многозадачность в других вещах, и поэтому они нажимают «сохранить» много. Каждый раз, когда они нажимают «Сохранить», мы получаем сообщение.

Итак, для каждого «логического» обновления у нас может быть 5-10 отдельных сообщений об обновлениях, некоторые из которых могут быть продублированы.

Это приводит к накладным расходам для пользователей моих нижестоящих систем, которые перегружены объемом обновлений. Для каждого обновления они должны сначала проверить, представляет ли это «действенную» часть работы, и отменить ее, если это только результат восходящего сохранения.

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

Редактировать: В сообщениях отсутствуют данные о последовательности. Поэтому, когда мы получаем обновление, нет никакого способа сказать, насколько «далеко» прошел процесс пользователь. Они могли бы закончить все это за один раз, или они могли бы пройти только 10%, и мы получим еще 10 обновлений, прежде чем они будут закончены.

Редактировать: В частности, я использую BizTalk в качестве платформы обмена сообщениями.

Редактировать: Шаблон, который я хочу реализовать, - это Агрегатор - http://eaipatterns.com/Aggregator.html. Проблема в том, что у меня нет возможности узнать, завершена ли серия сообщений, которые содержат ввод, или нет.

1 Ответ

0 голосов
/ 22 декабря 2011

Я решил реализовать вариант шаблона агрегатора, согласно которому из коллективного обмена выбирается сообщение по умолчанию (самое последнее).

Однако для «триггера» (набора условий, которые указывают, что агрегация завершена) вместо того, чтобы полагаться на завершение серии, у меня будет окно обслуживания, установленное в определенное время каждый день.

Надеюсь, это поможет другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...