Оскільки проєкту потрібно просувати та отримувати певні дані, оскільки обсяг даних досить великий — близько 3 мільйонів даних на день
Спочатку я використовував http post для подачі даних, але виявив, що це занадто повільно, а швидкість надсилання значно менша за швидкість прийому.
Тому, якщо ви хочете використовувати довге сокетне з'єднання для push і отримання даних, писати сокетний сервер і клієнт самостійно, це марна трата часу, але це може бути зроблено не дуже добре
Нарешті, activemq використовується для відправлення та отримання даних
По-перше, код виробника виглядає так:
Для споживача існує дві моделі:
1: Звичайна підписка, без потреби в постійній «підписці», тобто під час підключення ви можете отримувати повідомлення, але не можете приймати повідомлення до підключення, використовуючи «CreateConsumer» 2: Постійна підписка, після підключення ви можете отримувати дані, які раніше не були відправлені, використовуючи «CreateDurableConsumer»
Посилання на впровадження CreateDurableConsumer:Вхід за гіперпосиланням видно.
Створіть неспільну постійну підписку на вказану тему, якщо вона ще не існує, і створіть споживача на цій постійній підписці. Цей метод створює постійну підписку без використання селектора повідомлень, і значення noLocal є хибним. Додаток використовує постійну підписку, і він повинен отримувати всі повідомлення, опубліковані на тему, включаючи ті, що опубліковані, коли з нею немає активних користувачів. Провайдер JMS веде облік цієї постійної підписки і гарантує, що всі повідомлення від видавця зберігатимуться до доставки споживачу та підтвердження цією постійною підпискою до закінчення терміну дії.
Постійні підписки продовжують накопичувати повідомлення, доки їх не видаляють за допомогою методу відписки.
Цей метод можна використовувати лише з неспільними постійними підписками. Будь-які постійні підписки, створені цим методом, будуть відсторонені. Це означає, що одночасно за підпискою може перебувати лише один активний (тобто не закритий) споживач. Термін «споживач» тут позначає об'єкт TopicSubscriber, MessageConsumer або JMSConsumer у будь-якому клієнті.
Неспільна постійна підписка ідентифікується за ім'ям, визначеним клієнтом, та ідентифікатором клієнта, який потрібно встановити. Додатки, які потім хочуть створювати споживачів на неспільній постійній підписці, повинні використовувати той самий ідентифікатор клієнта.
Якщо вже існує неспільна постійна підписка з тією ж назвою та ідентифікатором клієнта, і вже вказані ті ж теми, селектор повідомлення та значення noLocal, і жоден споживач не активний (тобто не закритий) на постійній підписці, цей метод створює існуючу стійку підписку на MessageConsumer.
Якщо вже існує неспільна постійна підписка з таким самим ім'ям і ідентифікатором клієнта, і на постійній підписці є споживач, який вже активний (тобто не закритий), буде кинуто JMSException.
Якщо вже існує неспільна постійна підписка з тим самим ім'ям і ідентифікатором клієнта, але з іншим суб'єктом, вказано селектор повідомлення або значення noLocal, і жоден користувач не активний (тобто не закритий) на постійній підписці, це еквівалентно відписаному (видаленню) старої підписки та створенню нової.
Спільні та неспільні постійні підписки можуть не мати однакової назви та ідентичності клієнта. Якщо вже існує спільна постійна підписка з однаковим ім'ям і ідентифікатором клієнта, запускається JMSException.
Немає обмежень на постійні підписки та спільні непостійні підписки з однаковою назвою та clientId. Така підписка буде повністю окремою.
Цей метод ідентичний відповідному методу createDurableSubscriber, за винятком того, що він повертає MessageConsumer замість TopicSubscriber для представлення споживача.
Параметр: Теми - Нетимчасові підписки на теми назва — назва, що використовується для ідентифікації цієї підписки Кидок: InvalidDestinationException — якщо вказано недійсну тему. IllegalStateException — якщо ідентифікатор гостя не встановлений JMSException - Якщо сесія не створює неспільну постійну підписку та MessageConsumer через внутрішню помилку Якщо неспільна постійна підписка з таким самим ім'ям і ідентифікатором клієнта вже існує, і споживач вже активний Якщо вже існує спільна постійна підписка з тією ж назвою та ідентифікатором клієнта Відтоді: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic destination, ім'я рядка, вибір рядків, bool noLocal);
де messageSelector — це селектор повідомлень; Прапорець noLocal за замовчуванням є хибним, і при встановленні true він обмежує споживачів у отриманні лише повідомлень, опублікованих тим самим з'єднанням, що стосується лише тем, а не черг. Ім'я — це унікальна ідентичність теми підписки, і цей параметр потрібно встановити при підписці на постійну підписку.
Activemq .net має посилатися на завантаження пакета:Вхід за гіперпосиланням видно.
Повне завантаження вихідного коду:
Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласка Відповідь
|