Каталог решений - Паттерн Pub/Sub для самых маленьких

Паттерн Pub/Sub для самых маленьких

Паттерн Pub/Sub для самых маленьких

В наличии

Разбираем паттерн "на пальцах"

Категория:

Описание

При обмене данными между разными информационными системами мы сталкиваемся с определенными трудностями:

  1. Как отправить сообщение из одной информационной системы нескольким, не зная об их количестве.
  2. Как нам отправлять сообщения, не дожидаясь ответа.
  3. Как отправить одно и то же сообщение информационным системам, требующим на вход разные типы сообщений (xml, json и т.д.).

Паттерн Publisher/Subscriber, также известный как Observer, позволяет сделать возможным такое взаимодействие, добавляя прослойку между отправителем и получателем в виде сервера. Благодаря серверу мы можем подняться на один уровень абстракций выше обмена и добавить сущность для промежуточного хранения файлов, а также сущность для преобразования файлов.

Реализуем данный паттерн текстом.

Без шины (принцип вытягивания).

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

С простейшей шиной (толкай — тяни)

Тогда магазин (pub) нанял мужичка (server), которому они отдавали животных по мере появления. Мужичок бережливо распределял их по разным комнатам, кошек в одну, собак в другую. А магазины (sub) поменьше стали приходить только в нужные им комнаты и брать живность. Но покупателей становилось всё больше, и сами они становились всё специфичнее. Одни требовали сделать прическу собакам, другие научить их командам, а третьи расстраивались, когда, придя в комнату, не находили там животных, из-за того, что их уже кто-то забрал.

С полноценной шиной.

Тогда хитрый мужичок построил аппарат для клонирования, и каждому приходящему в комнату отдавал нужное животное (message), но с необходимым набором навыков (xml, json, char[]… whatever).

Домашнее задание.

  1. Реализовать вариант «с простейшей шиной» на языке 1С. 1 pub, 2 subа.  В качестве хранилища использовать каталоги системы. Обмен в формате xml, через стандартную сериализацию. Порядок обмена следующий:

         1.1   Pub кладет в каталог pub файлик со строкой.

         1.2   Шина его забирает.

         1.3   Преобразует файл ( input: MessageNumber.xml, output: base1_ MessageNumber.xml, base2_ MessageNumber.xml).

         1.4   Кладет полученные файлы в каталог sub.

         1.5   Удаляет файл из каталога pub.

         1.6   Откуда их забирают (слушая наличие файлов) subы, записывают значения в справочник. И удаляют файлик.

      2. Усложним задачу: одна из баз будет принимать xml, а вторая json. Сведения о том, какая база какой тип принимает,                     должны храниться в шине в виде справочника.

          Как проверяется задание:

В Publishere пишем строку, нажимаем “Разослать», проверяем наличие записи в базах-приемниках.

has been added to your cart:
Оформление заказа