Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 13505|Отговор: 2

Постоянни абонаментни настройки на ActiveMQ

[Копирай линк]
Публикувано в 9.01.2017 г. 11:12:10 ч. | | |

Постоянни абонаментни настройки на ActiveMQ
Като зададете режима на доставка PERSISTENT за издателя, можете да използвате постоянни абонаменти за абонатите, което гарантира, че програмата Pub/Sub получава всички публикувани съобщения.
Абонаментите за съобщения се разделят на неустойчиви и трайни абонаменти, като неустойчивите абонаменти могат да получават съобщения, изпратени към дадена тема, само когато клиентът е активен, тоест когато клиентът е офлайн, съобщенията, изпратени към темата през този период, се губят и никога не се получават. Когато клиентът е офлайн, ActiveMQ запазва всички съобщения, изпратени на субекта според неговия ID, а когато клиентът се свърже отново с ActiveMQ, получава всички съобщения, изпратени на субекта, когато е офлайн. Постоянните абонаменти увеличават натоварването и имат само един активен потребител в постоянен абонамент едновременно. Стъпки за създаване на постоянен абонамент:
1. Настройте клиентски идентификатор за връзката;
2. Посочете име на абонамента за темата на абонамента;
Горната комбинация трябва да е уникална.
Кодът реализира постоянни абонаменти

(1) При използване на опашка, тоест при опашка, има само един потребител на съобщение, така че персистентността е много проста – просто го запазете в базата данни

。 След това всеки потребител може да я вземе и изхвърли. Няма значение, ако потребителят го изключи за известно време.

(2) При използване на тема, тоест при абонамент, всяко съобщение може да има няколко потребители, което е по-сложно.

Първо, ако приемем, че потребителите са обикновени потребители,
------------------------
След пускането на <1> Activemq беше пуснат новини 1, но за съжаление сега няма потребители, тоест никой потребител не е абониран. Така че

, новината беше изоставена.

<2> Потребител 1 стартира, свърза се с activemq, абонира се и изчака съобщение~~

activemq публикува съобщение 2, Добре, потребител 1 го приема и обработва. Изоставяне на съобщение.

<3> Потребител 2 също е стартиран, свързан с activemq, абонаиран е и чака съобщение~~

Activemq публикува съобщение 3, ОК, Потребител 1, Потребител 2 са всички получени и обработени. Изоставяне на съобщение.

<4> Потребител 1 е изключен.

Activemq публикува съобщение 4, Добре, потребител 2 го приема и обработва. Изоставяне на съобщение.

<5> Потребител 1 започна отново.

Activemq публикува съобщения 5, OK, потребител 1 и потребител 2 всички ги получават и обработват. Изоставяне на съобщение.
-----------------------------
В обобщение:
Activemq просто изпраща съобщения до текущо стартирания потребител.
Потребителите, които се изключват, ще пропуснат много съобщения и няма да могат да ги получават отново.

Ако изпратено съобщение е важна потребителска синхронизация и ги пропуска, потребителските данни не са синхронизирани.

И така, как да накарате потребителите да получават пропуснати съобщения при рестартиране?

Отговорът е постоянен абонамент.
-----------------------------

Обикновените абонаменти, без разлика между потребителите, ако има няколко глави в залата, хвърлят няколко задушени питки.
За постоянни абонаменти трябва да запишете името на потребителя.
Чжан Сан каза: Аз съм Чжан Сан, има парени питки за мен, ще се върна да ги взема.
Ли Си каза: Аз съм Ли Си, има парени питки за мен, ще се върна да ги взема.
activemq записа имената на Чжан Сан и Ли Си.

След това, когато се разделят задушените питки, едната глава все пак дава задушена питка.
След разделянето, когато видя, че Чжан Сан не говори, това означаваше, че го няма, така че му остави едно.
Ли Си проговори, така че нямаше нужда да остава.

Чжан Сан се върна, потърси activemq и погледна – това не е Джан Сан, донеси бързо задушените си питки.
Може да е една задушена питка, а може и 100 задушени питки, зависи колко парени питки е разделил Чжан Сан, откакто си тръгна за известно време.

Activemq отличава потребителите по clientID и име на абонат.
-----------------------------
Създайте връзка
connection = connectionFactory.createConnection();
connection.setClientID("bbb"); Постоянните абонаменти изискват настройка на това.
connection.start();

Създайте сесия
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Създайте дестинация
Тема = session.createTopic("userSyncTopic"); Име на темата

MessageConsumer consumer = session.createConsumer(тема); Редовен абонамент
MessageConsumer consumer = session.createDurableSubscriber(тема,"bbb"); Постоянни абонаменти


Друг момент е, че производителят на съобщението използва постоянен режим при изпращане на съобщения
СъобщениеПродуцент продуцент = ...;
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Ако не, по подразбиране е постоянен

(5) Ако се използва един и същ "clientID", се счита за един и същ потребител. Ако две програми използват един и същ "clientID", само едната може да се свърже към activemq едновременно, а втората връзка ще отчете грешка.

(6) Настройките на activemq са в conf/activemq.xml, а стандартните съобщения се запазват в data/kahadb, и съобщенията няма да се загубят при рестартиране на activemq.

Можете да получите достъп до http://localhost:8161/admin/index.jsp: да разглеждате информация за текущи опашки, теми и постоянни абонати, да изпращате съобщения и още.

Можете да копирате съдържанието в activemq-jdbc.xml и да го модифицирате, а съобщението можете да запазите в други бази данни.




Предишен:Петото поколение VIP канал за взимане на 360 билети, бързо влезте във VIP опашката
Следващ:. .Net платформа
 Хазяин| Публикувано в 9.01.2017 г. 13:41:53 ч. |
1 Сравнение на техническите характеристики на опашката и темата
Име
Тема
Опашка
Обща информация
Публикувай Абонирай се съобщения Публикувай абонаментни съобщения
Точка до точка
Няма държава
Данните за темата по подразбиране са без състояние.
Данните от опашката се запазват като файл на MQ сървъра по подразбиране, например Active MQ обикновено се съхранява под $AMQ_HOME\data\kr-store\data. Може да бъде конфигуриран и като база данни.
Гаранция за целостта
Няма гаранция, че всяка публикувана от издателя информация ще бъде приета от абоната.
Опашката гарантира, че всяко парче данни може да бъде получено от получателя.
дали посланието ще бъде изгубено
Обикновено, когато издател публикува съобщение по дадена тема, само подредакцията, която слуша адреса на темата, може да получи съобщението. Ако няма слушане на субредитите, темата се губи.
Изпращачът изпраща съобщение до целевата опашка, а получателят може да получава съобщения в тази опашка асинхронно. Съобщенията в опашката няма да се губят, ако няма получател, който да ги приеме за момента.
Политика за приемане на съобщения
Политика за публикуване и получаване на съобщения "едно към много" – множество субредити, които слушат един и същ адрес на темата, могат да получават съобщения, изпратени от издателя. Субредитът получава известие до mq сървъра
Политики за публикуване и получаване на съобщения едно към едно, съобщения, изпратени от подател, могат да бъдат получени само от един получател. След като получателят получи, MQ сървърът уведомява MQ сървъра, че е получен, и MQ сървърът изтрива или предприема други действия върху съобщенията в опашката.

 Хазяин| Публикувано в 9.01.2017 г. 13:42:15 ч. |
Най-голямата разлика между тема и опашка е, че темата е под формата на излъчване, уведомявайки всички онлайн клиенти за ново съобщение, а клиентът без мониторинг няма да получи съобщението; От друга страна, Queue уведомява един от няколко слушащи клиента по peer-to-peer начин.

2 Сравнение на ефективността на обработката на съобщения между методите за тема и опашка
        Като увеличите броя на конкурентността на слушащия клиент, проверете дали натискът на съобщението на темата ще намалее значително поради увеличаването на конкурентността на слушащия клиент.
        От измерените резултати няма значителна разлика в ефективността на изпращане и получаване на съобщения, изпратени от тематичния метод при един абонат и 100 абонати, но при предпоставката за 500 абонати (нишки) разликата в ефективността е очевидна (поради конкурентността на 500 нишки, натоварването на процесора на моята машина е до 70-90%, така че е невъзможно да се потвърди дали това е тесно място в производителността, причинено от локалния ми тест, или ограничено място в производителността в метода за изпращане на тематични съобщения), което води до значително намаление на ефективността).
        Няма значителна разлика в ефективността на изпращане и получаване на съобщения, изпратени чрез тематичен метод и режим на опашка при предпоставка за един абонат и 100 абонати, но при предпоставката за 500 абонати конкурентност, ефективността на тематичния режим е значително по-ниска от тази на опашката.
        Ефективността на изпращане и получаване на съобщения, изпратени по метода Опашка, не се променя значително при предпоставката за един абонат, 100 абонати и 500 абонати.
Измерени данни по темата:


Общият брой съобщения, изпратени от подателя
Общият брой получени от всички абонати съобщения
Средното време за изпращане и получаване на съобщения
Един абонат
100
100
101ms
100 абонати
100
10000
103ms
500 абонати
100
50000
14162ms

Данни, измерени в опашка:


Общият брой съобщения, изпратени от подателя
Общият брой получени от всички абонати съобщения
Средното време за изпращане и получаване на съобщения
Един абонат
100
100
96ms
100 абонати
100
100
96ms
500 абонати
100
100
100ms

Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com