Тъй като проектът се нуждае от някои данни, които да бъдат предоставени и получени, тъй като количеството данни е сравнително голямо, около 3 милиона данни на ден
В началото използвах http post за подаване на данни, но установих, че е твърде бавно, а скоростта на изпращане е много по-ниска от тази на приемането.
Затова, ако искате да използвате дълга сокет връзка за изпращане и получаване на данни, да пишете сокет сървъра и клиента сами, това е загуба на време, но може да не е направено добре
Накрая, activemq се използва за изпращане и получаване на данни
Първо, кодът на производителя е следният:
За потребителя има два модела:
1: Обикновен абонамент, няма нужда от постоянен "абонамент", тоест при свързване можете да получавате съобщения и не можете да ги получавате преди свързване, използвайки "CreateConsumer" 2: Постоянен абонамент, след свързване можете да получавате данни, които не са били изпращани преди, използвайки "CreateDurableConsumer"
Връзки към въвеждането на CreateDurableConsumer:Входът към хиперлинк е видим.
Създайте несподелен постоянен абонамент по посочената тема, ако той вече не съществува, и създайте потребител на този постоянен абонамент. Този метод създава постоянен абонамент без използване на селектор на съобщения, а стойността noLocal е невярна. Приложението използва постоянен абонамент и трябва да получава всички съобщения, публикувани по темата, включително съобщения, публикувани когато няма активни потребители, свързани с него. JMS доставчикът води запис на този постоянен абонамент и гарантира, че всички съобщения от съответния издател ще бъдат запазени, докато не бъдат доставени до потребителя и потвърдени от този постоянен абонамент, докато не изтекат.
Постоянните абонаменти продължават да натрупват съобщения, докато не бъдат изтрити чрез метода за отписване.
Този метод може да се използва само при несподелени постоянни абонаменти. Всички постоянни абонаменти, създадени по този метод, ще бъдат отменени. Това означава, че само един активен (т.е. не затворен) потребител може да съществува по абонамента едновременно. Терминът "потребител" тук означава обекта TopicSubscriber, MessageConsumer или JMSConsumer във всеки клиент.
Несподеленият постоянен абонамент се идентифицира с име, зададено от клиента, и идентификатор на клиента, който трябва да бъде зададен. Приложенията, които след това искат да създават потребители с несподелен постоянен абонамент, трябва да използват същия идентификатор на клиента.
Ако вече съществува несподелен постоянен абонамент със същото име и идентификатор на клиента, и същата тема, селектор на съобщения и стойност noLocal вече са зададени и няма потребител активен (т.е. не е затворен) на постоянния абонамент, този метод създава съществуващ траен абонамент в MessageConsumer.
Ако вече съществува несподелен постоянен абонамент със същото име и идентификатор на клиента, и потребител на постоянния абонамент вече е активен (т.е. не е затворен), ще бъде изхвърлена JMSException.
Ако вече има несподелен постоянен абонамент със същото име и идентификатор на клиента, но с различен субект, е посочен селектор на съобщения или стойност noLocal, и нито един потребител не е активен (т.е. не е затворен) на постоянния абонамент, това е еквивалентно на отписване (изтриване) на стария абонамент и създаване на нов.
Споделените и несподелените постоянни абонаменти може да нямат едно и също име и идентичност на клиента. Ако вече съществува споделен постоянен абонамент със същото име и идентификатор на клиента, се хвърля JMSException.
Няма ограничение за постоянни абонаменти и споделени непостоянни абонаменти със същото име и клиентId. Такъв абонамент ще бъде напълно отделен.
Този метод е същият като съответния метод createDurableSubscriber, с изключение на това, че връща MessageConsumer вместо TopicSubscriber, за да представи потребителя.
Параметър: Теми - Временни тематични абонаменти име - Името, използвано за идентифициране на този абонамент Хвърляне: InvalidDestinationException - Ако е посочена невалидна тема. IllegalStateException - Ако идентификаторът на госта не е зададен JMSException - Ако сесията не успее да създаде несподелен постоянен абонамент и MessageConsumer поради някаква вътрешна грешка Ако вече съществува несподелен постоянен абонамент със същото име и идентификатор на клиента, а потребителят вече е активен Ако вече съществува споделен постоянен абонамент със същото име и идентификатор на клиента Откато: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic дестинация, име на низ, селектор на низ, bool noLocal);
където messageSelector е селекторът на съобщения; Флагът noLocal по подразбиране е фалшив и когато е настроен на true, ограничава потребителите да получават само съобщения, публикувани от същата връзка като тях, което важи само за теми, а не за опашки. името е уникалната идентичност на темата на абонамента, и този параметър трябва да бъде зададен при абониране за постоянен абонамент.
Activemq .net трябва да се справи с изтегляне на пакети:Входът към хиперлинк е видим.
Пълно изтегляне на изходния код:
Туристи, ако искате да видите скритото съдържание на този пост, моля Отговор
|