Публікація-підписка (шаблон проєктування) — Вікіпедія

Публікація-підписка (англ. Publish–subscribe, Pub/sub) — шаблон проєктування в архітектурі ПЗ, шаблон поведінки, що реалізує механізм передачі повідомлень, в якому відправники повідомлень, що називаються видавцями (publishers), не здійснюють пряме відправлення повідомлень приймачам, які називаються підписниками (subscribers). Замість цього опубліковані повідомлення розбиваються на категорії за класами, без знання про те, яким підписникам вони мають бути прийняті і чи взагалі будуть такі підписники. Аналогічно, підписники виявляють зацікавленість в певних класах повідомлень і приймають ті повідомлення, які їх цікавлять, без знання того, які видавці їх публікують. Шаблон сприяє отриманню ПЗ з більшою масштабованістю та динамічнішою топологію мережі[1].

Принципова схема механізму публікація-підписка в DDS

Механізм, покладений в основу Pub/sub, близький механізму черг повідомлень, який зазвичай застосовується в message-oriented middleware системах. Більшість систем передачі повідомлень підтримують у своїх API як pub/sub, так і черги повідомлень, як наприклад Java Message Service (JMS).

Фільтрація повідомлень[ред. | ред. код]

В моделі pub/sub, підписники зазвичай приймають лише підмножину усіх опублікованих повідомлень. Процес вибору повідомлень для прийняття та обробки називається фільтрацією. Існують дві типові форми фільтрації, що базуються на темі і на контенті.

В системах, що базується на темах, повідомлення публікуються в «теми» (іменовані логічні канали). Підписники в таких системах отримують всі повідомлення, опубліковані в теми, на які вони підписані; повідомлення передаються всім підписникам, підписаним на повідомлення теми. Відповідальність за класи повідомлень, на які можна підписуватись, покладена на видавця.

В системах, що базуються на контенті, повідомлення надаються підписникам, якщо атрибути таких повідомлень відповідають атрибутам, описаним підписником. Відповідальність за класи повідомлень, на які можна підписуватись, покладена на підписника.

Деякі системи є гібридами обох видів: видавці публікують повідомлення в теми, а підписники підписуються на кілька тем, описуючи атрибути бажаних повідомлень.

Див. також[ред. | ред. код]

Зноски[ред. | ред. код]

  1. Hohpe, G. and Woolf, B. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. — Pearson Education, 2012. — P. 106. — ISBN 9780133065107.

Посилання[ред. | ред. код]