الگوی انتشار-اشتراک به معنای این است که یک پیامی که توسط یک تولید‌کننده ارسال می‌شود، توسط چندین مصرف‌کننده دریافت می‌شود. از آنجا که یک پیام توسط چندین مصرف‌کننده مصرف و پردازش می‌شود، این الگو همچنین الگوی پخش یا الگوی یک به چند نیز نامیده می‌شود.

توجه: از آنجا که RabbitMQ الگوی انتشار-اشتراک را با استفاده از نوع تبادل fanout پیاده‌سازی می‌کند، این الگو همچنین الگوی fanout نامیده می‌شود.

نمودار معماری

الگوی fanout

توضیحات:

  • P نمایاننده تولید‌کننده است، C1 و C2 نمایاننده مصرف‌کنندگان هستند، قرمز نمایاننده‌ی صف‌هاست و X نمایاننده تبادل است.
  • تبادل مسئول انتقال پیام‌ها به تمامی صف‌های متصل به تبادل است.
  • می‌توان چندین صف تعریف کرد، هر یک متصل به همان تبادل هستند.
  • هر صف می‌تواند یک یا چندین مصرف‌کننده داشته باشد.

نکته: در یک صف مشخص، یک پیام تنها می‌تواند توسط یک مصرف پردازش شود. دلیل اینکه الگوی fanout می‌تواند پخش پیام را دست‌یابی کند، اساساً از طریق چندین صف پیام است.

موارد استفاده

الگوی انتشار-اشتراک یک الگوی مصرف یک به چند شایع است. به عنوان مثال، پس از ثبت سفارش در یک فروشگاه آنلاین، یک پیام سفارش تولید می‌شود. ماژول انبار به پیام سفارش مشترک می‌شود تا حمل و نقل را پردازش کند، ماژول اطلاع‌رسانی به پیام سفارش مشترک می‌شود تا پیام‌های متنی را ارسال کند، ماژول امتیاز به پیام سفارش مشترک می‌شود تا امتیازها را پردازش کند و غیره. با اشتراک گذاری پیام‌ها به عنوان نیازهای لازم، گسترش کسب و کار دست‌یابی شده و این یک الگوی طراحی با کم‌جفتی است.