ارسال پیام - پیام های ارسال شده به یک کارگزار به کارگزار هدف "تکرار" می شوند.
- قدردانی از حذف پیام ها در یک کارگزار به کارگزار هدف ارسال می شود.
- توجه داشته باشید که اگر پیام برای مصرف کننده در آینه هدف در انتظار باشد ، ACK موفق نخواهد شد و پیام ممکن است توسط هر دو کارگزار تحویل داده شود.
پیکربندی آینه
برای پیکربندی آینه سازی به کارگزار هدف ، یک عنصر را در عنصر اضافه کنید.
از آرگومان های اختیاری زیر می توان استفاده کرد:
- queue-removal: مشخص می کند که آیا یک رویداد صف یا آدرس خطاب ارسال شده است. مقدار پیش فرض درست است .
- پیام-بازپرداخت: مشخص می کند که آیا تأیید پیام ارسال شده است یا خیر. مقدار پیش فرض درست است .
- صف ایجاد: مشخص می کند که آیا یک رویداد صف یا آدرس ایجاد ارسال شده است. مقدار پیش فرض درست است .
فیلتر آدرس: یک لیست اختیاری جدا شده از کاما از ورود و/یا فیلتر محرومیت مورد استفاده برای حاکمیت که در آن آدرس (و صف های مرتبط) برنامه های آینه کاری استفاده می شود ، در این اتصال کارگزار ایجاد می شود. یعنی ، رویدادها فقط برای آدرس هایی که با فیلتر مطابقت دارند ، به کارگزار هدف آینه می شوند. هنگام شروع با ورود به مطالعه مشخص شده در این زمینه ، یک آدرس مطابقت دارد ، مگر اینکه آدرس نیز صریحاً توسط یک ورودی دیگر مستثنی باشد. ورود محرومیت با پیشوند! برای مشخص کردن هر آدرس با این مقدار مطابقت ندارد. اگر هیچ ورود به مطالعه در لیست مشخص نشده باشد ، تمام آدرس هایی که صریحاً مستثنی نیستند مطابقت دارند. اگر ویژگی فیلتر آدرس مشخص نشده باشد ، تمام آدرس ها (و صف های مرتبط) مطابقت دارند و آینه می شوند.
- "اتحادیه اروپا" با همه آدرس ها با "اتحادیه اروپا" مطابقت دارد
- '! اتحادیه اروپا' به جز کسانی که با "اتحادیه اروپا" شروع می کنند مطابقت دارد
- "Eu. uk ، eu. de" همه آدرس ها را با "eu. uk" یا "eu. de" مطابقت می دهد
- "EU ،! Eu. uk" همه آدرس ها را با "اتحادیه اروپا" شروع می کند اما آنهایی که با "eu. uk" شروع نمی شوند
توجه داشته باشید:
- محرومیت آدرس همیشه بر ورود به آدرس اولویت خواهد بود.
- تطبیق آدرس در عناصر آینه مبتنی بر پیشوند است و از تطبیق کارت وحشی پشتیبانی نمی کند.
نمونه ای از پیکربندی آینه در زیر نشان داده شده است:
صف ذخیره و رو به جلو
رویدادهای آینه همیشه در یک صفحات محلی با عنوان "$ activemq artemis_mirror" ذخیره می شوند و سپس با نام پیکربندی شده اتصال کارگزار هماهنگ می شوند.
بنابراین ، در پیکربندی زیر آینه های آینه در صف بنام "$ activemq_artemis_mirror_brokerb" ذخیره می شوند.
این پیام ها سپس به Brokerb: 5672 منتقل می شوند. یک تولید کننده به آدرس $ ActiveMQ_ARTEMIS_MIRROR_BROKERB به سمت BrokerB ایجاد می شود. اگر یک مدیر امنیتی پیکربندی شده باشد ، نقش های امنیتی باید در اتصال کارگزار به کاربر ارائه شود.
توجه کنید به صف $ activeMQ_ARTEMIS_MIRROR_BROKERB در واقع در BrokerB وجود نخواهد داشت و بنابراین در کنسول مدیریت قابل مشاهده نیست. کارگزار هدف با این پیام ها به عنوان رویدادهای آینه رفتار می کند و عملیات مناسب را در کارگزار هدف انجام می دهد.
پیام های موجود
کارگزار فقط پیام های آینه ای را که از نقطه زمانی که آینه پیکربندی شده است ، آینه می کند. پیام های موجود قبلاً به کارگزاران دیگر ارسال نمی شوند.
آینه دوگانه (بازیابی فاجعه)
ActiveMQ Artemis از آینه کاری خودکار عقب پشتیبانی می کند. هر پیام ارسال شده و هر تصدیق به طور غیر همزمان به کارگزار آینه ای تکرار می شود.
در نمودار زیر ، دو سرور به نام Datacenter1 و Datacenter2 وجود خواهد داشت. برای داشتن پیکربندی آینه دوگانه ، لازم است اتصال کارگزار آینه در هر کارگزار اضافه کنید. xml:

شکل 2. اتصال کارگزار - بازیابی فاجعه.
در Datacenter1 ، کد زیر باید در Broker. xml اضافه شود:
XML زیر باید در broker. xml datacenter2 اضافه شود:
اتصالات کارگزار بدون توجه به اینکه از کجا سرچشمه گرفته اند ، ارسال ها و تصدیق را به کارگزار دیگر تکرار می کنند. اگر پیام ها در DC1 (Datacenter1) ارسال شوند ، اینها به طور خودکار به DC2 (Datacenter2) منتقل می شوند. پیام های دریافت شده در DC2 به طور خودکار به DC1 مرتبط می شوند. تنها استثناء این قانون در صورت وجود مصرف کنندگان با پیام های در انتظار هر سرور وجود داشته است ، جایی که یک تأیید آینه ای مانع از مصرف پیام توسط هر دو مصرف کننده نمی شود. توصیه می شود مصرف کنندگان فعال در هر دو سرور نداشته باشید.
مثال
مثالی به عنوان بخشی از توزیع وجود دارد که پیکربندی کارگزار دوگانه (یا بازیابی فاجعه) را در زیر ./examples/features/broker-connection/disaster-recovery نشان می دهد.
در این مثال ، دو کارگزار برای آینه کردن یکدیگر پیکربندی شده اند و هر اتفاقی که در یک کارگزار رخ می دهد بلافاصله در کارگزار دیگر کپی می شود.
فرستنده ها و گیرنده ها
امکان اتصال یک کارگزار ActiveMQ Artemis به یک نقطه پایانی AMQP دیگر به سادگی با ایجاد یک عنصر اتصال کارگزار فرستنده یا گیرنده امکان پذیر است.
برای یک فرستنده ، کارگزار یک مصرف کننده پیام را در صف ایجاد می کند که پیام ها را به نقطه پایانی AMQP دیگر ارسال می کند.
برای یک گیرنده ، کارگزار یک تولید کننده پیام را در آدرس ایجاد می کند که پیام هایی را از نقطه پایانی AMQP دریافت می کند.
هر دو عنصر به عنوان یک پل پیام عمل می کنند. با این حال ، هیچ سربار اضافی برای پردازش پیام ها لازم نیست. فرستنده ها و گیرنده ها دقیقاً مانند هر مصرف کننده یا تولید کننده دیگری در ActiveMQ Artemis رفتار می کنند.
صف های خاص را می توان توسط فرستنده یا گیرنده ها پیکربندی کرد. عبارات Wildcard می تواند برای مطابقت با فرستنده ها و گیرنده ها با آدرس های خاص یا مجموعه آدرس ها استفاده شود. هنگام پیکربندی فرستنده یا گیرنده ، ویژگی های زیر را می توان تنظیم کرد:
- آدرس آدرس: با استفاده از یک عبارت Wildcard ، فرستنده یا گیرنده را با یک آدرس یا آدرس خاص مطابقت دهید
- queue-name: فرستنده یا گیرنده را برای یک صف خاص پیکربندی کنید
برخی از نمونه ها در زیر نشان داده شده است.
با استفاده از عبارات آدرس:
با استفاده از نامهای صف:
مهم: گیرنده ها را فقط می توان با یک صف محلی که از قبل وجود دارد مطابقت داد. بنابراین، اگر از گیرنده ها استفاده می شود، اطمینان حاصل کنید که صف ها از قبل به صورت محلی ایجاد شده اند. در غیر این صورت، کارگزار نمی تواند صف ها و آدرس های راه دور را مطابقت دهد.
مهم: از ایجاد فرستنده و گیرنده به یک مقصد خودداری کنید. این یک حلقه نامحدود از ارسال و دریافت ایجاد می کند.
همتایان
کارگزار را می توان به عنوان یک همتا پیکربندی کرد که به روتر توزیع Qpid Apache متصل می شود و به آن دستور می دهد که کارگزار به عنوان یک صف ذخیره و ارسال برای یک آدرس نقطه بین AMQP معین که روی روتر پیکربندی شده است، عمل کند. در این سناریو، کلاینت ها برای ارسال و دریافت پیام ها با استفاده از یک آدرس مشخص، به یک روتر متصل می شوند و روتر این پیام ها را به یا از صف بروکر هدایت می کند.
پیکربندی همتا باعث می شود که ActiveMQ Artemis یک جفت فرستنده و گیرنده برای هر مقصدی که در پیکربندی اتصال واسطه ای مطابقت دارد، ایجاد کند، که اینها دارای پیکربندی خاصی هستند تا به Qpid Dispatch اطلاع دهد تا با کارگزار همکاری کند. این جایگزین نیاز سنتی به اتصال راه اندازی شده توسط روتر و پیوندهای خودکار می شود.
روتر توزیع Qpid گزینه های شبکه پیشرفته زیادی را ارائه می دهد که همراه با ActiveMQ Artemis استفاده می شود.
با پیکربندی همتا، همان ویژگی هایی وجود دارد که فرستنده و گیرنده وجود دارد. به عنوان مثال، پیکربندی که در آن صف هایی با نام هایی که شروع به «صف» می کنند. به عنوان ذخیره سازی برای آدرس ایستگاه مسیریاب منطبق عمل می کند:
باید یک پیکربندی آدرس منطبق بر روی مسیریاب وجود داشته باشد که به آن دستور می دهد که آدرس های روتر خاصی که کارگزار به آن وصل می کند باید به عنوان ایستگاه بین المللی در نظر گرفته شود. به عنوان مثال، یک پیکربندی آدرس روتر مبتنی بر پیشوند مشابه به این صورت خواهد بود:
برای اطلاعات بیشتر به مستندات "پیام های واسطه ای" برای روتر ارسال Apache Qpid مراجعه کنید.
مهم: از این ویژگی برای اتصال به کارگزار دیگری استفاده نکنید، در غیر این صورت هر پیامی که ارسال می شود بلافاصله آماده مصرف ایجاد یک پژواک بی نهایت از ارسال ها و دریافت ها خواهد بود.
مهم: برای برقراری ارتباط با کارگزار نیازی به پیکربندی روتر با کانکتور یا پیوندهای خودکار نیست. پیکربندی همتای کارگزاران جایگزین این جنبه های استفاده از ایستگاه بین مسیریاب می شود.
در نظر گرفتن آدرس
به شدت توصیه می شود که نام آدرس و نام صف یکسان باشد. هنگامی که یک صف با نام متمایز خود (مانند مثال زیر) استفاده می شود، فرستنده و گیرنده همیشه از نام آدرس هنگام ایجاد نقطه پایانی راه دور استفاده می کنند.
در مثال بالا، اتصال بروکر یک فرستنده AMQP به سمت "queues. A" ایجاد می کند.
مهم: برای جلوگیری از سردرگمی، توصیه می شود که نام آدرس و نام صف یکسان باشند.