Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 304494|Ответ: 72

[Источник] c# Использование очереди сообщений MessageQueue с исходным кодом

  [Скопировать ссылку]
Опубликовано 14.12.2016 13:51:37 | | | |

С помощью MSMQ (Microsoft Message Queue) разработчики приложений могут удобно и надежно взаимодействовать с приложениями, отправляя и принимая сообщения. Обработка сообщений предоставляет вам надёжный и безопасный метод для гарантированной передачи сообщений и выполнения множества бизнес-процессов.

MSMQ, как и XML Web Services и .Net Remoting, является распределённой технологией разработки. Однако при использовании компонентов XML Web Services или .Net Remoting клиент должен обмениваться информацией с сервером в реальном времени, а сервер должен оставаться онлайн. MSMQ может работать, когда сервер офлайн, временно сохраняя сообщение в очереди сообщений на стороне клиента, а затем отправляя его на сервер для обработки, когда оно онлайн.

Очевидно, что MSMQ не подходит для ситуации, когда клиенту нужно своевременно отвечать с сервера, а MSMQ взаимодействует с сервером асинхронно, поэтому нет необходимости долго ждать обработки сервера.



Хотя и XML Web Services, и .Net Remoting предоставляют свойство [OneWay] для обработки асинхронных вызовов, оно используется для решения проблемы долгих вызовов методов на серверной стороне, блокирующих клиентскую сторону на длительное время. Однако это не может решить проблему большой нагрузки на клиента, и сервер принимает запросы быстрее, чем успевает их обработать.

В целом атрибут [OneWay] не используется в специализированных сервисах обмена сообщениями.



1. Основные термины и понятия

«Сообщение» — это единица данных, передаваемая между двумя компьютерами. Сообщения могут быть очень простыми, например, содержать только текстовые строки; Он также может быть более сложным и содержать встроенные объекты.



Сообщения отправляются в очередь. «Очередь сообщений» — это контейнер, который хранит сообщения во время их передачи. Менеджер очереди сообщений выступает посредником при передаче сообщений от источника к назначению. Основная цель очереди — обеспечить маршрутизацию и гарантировать доставку сообщений; Если получатель недоступен во время отправки сообщения, очередь удерживает сообщение до тех пор, пока оно не будет успешно доставлено.



«Очередь сообщений» — это технология обработки сообщений компании Microsoft, обеспечивающая возможности обработки сообщений и очереди для любого приложения на любой комбинации компьютеров с установленной Microsoft Windows, независимо от того, находятся ли они одновременно в одной сети или онлайн.



«Сеть очереди сообщений» — это любая группа компьютеров, способных передавать сообщения друг другу. Разные компьютеры в сети играют разные роли в обеспечении плавной обработки сообщений. Некоторые из них предоставляют информацию о маршрутизации для определения способа отправки сообщений, некоторые содержат важную информацию о всей сети, а некоторые просто отправляют и принимают сообщения.



Во время установки очереди сообщений администраторы определяют, какие серверы могут взаимодействовать друг с другом, и устанавливают специальные роли для конкретных серверов. Компьютеры, составляющие эту сеть «очередей сообщений», называются «сайтами» и связаны друг с другом «ссылками на сайты». Каждая ссылка на сайт имеет соответствующую «накладную нагрузку», определяемую администратором и указывающую, как часто сообщения доставляются через эту ссылку.



Администратор очереди сообщений также настраивает один или несколько компьютеров в сети, которые выступают в роли серверов маршрутизации. Сервер маршрутизации анализирует накладные расходы каждой ссылки, чтобы определить самый быстрый и эффективный способ доставки сообщения через несколько сайтов и способа его доставки.



2. Тип очереди

Существует два основных типа очередей: очереди, созданные вами или другими пользователями в вашей сети, и системные очереди.

Пользовательская очередь может быть любой из следующих форм:

Публичные очереди воспроизводятся по всей сети очередей сообщений и могут быть доступны всеми сайтами, подключёнными к сети.

Приватные очереди не публикуются по всей сети. Вместо этого они доступны только на местном компьютере, где они находятся. Частные очереди доступны только приложениям, которые знают полное имя пути или метку очереди.

Очередь управления содержит сообщения, подтверждающие получение сообщений, отправленных в определённой сети очереди сообщений. Укажите очередь управления, которую вы хотите использовать для компонента MessageQueue, если она есть.

Очередь ответа содержит сообщения ответа, которые возвращаются в отправительное приложение, когда целевое приложение получает сообщение. Укажите, какую очередь ответа вы хотите, чтобы компонент MessageQueue использовал, если он есть.



Очереди, генерируемые системой, обычно делятся на следующие категории:

Очередь журнала по желанию хранит копии отправленных сообщений и копий сообщений, удалённых из очереди. Одна очередь журнала на каждом клиенте очереди сообщений хранит копию сообщений, отправленных с этого компьютера. Для каждой очереди на сервере создаётся отдельная очередь дневника. Этот журнал отслеживает сообщения, удалённые из этой очереди.

Очередь «Мёртвая буква» хранит копии сообщений, которые не могут быть доставлены или имеют истёкший срок действия. Если сообщение, которое истекает или не может быть доставлено, является транзакционным, оно хранится в специальной очереди с мёртвыми буквами, называемой «транзакционной очередью с мёртвыми буквами». Мёртвые буквы хранятся на компьютере, где находится просрочённое сообщение. Для получения дополнительной информации о сообщениях о тайм-ауте и истечении срока действия см. в разделе «Свойства сообщения по умолчанию».

Очередь отчетов содержит сообщения, указывающие маршрут доставки сообщения до пункта назначения, а также может содержать тестовые сообщения. На каждом компьютере может быть только одна очередь отчётов.

Выделенная системная очередь — это серия выделенных очередей, которые хранят управленческие и уведомлённые сообщения, необходимые системе для выполнения операций обработки сообщений.

Большая часть работы в приложении связана с доступом к публичным очередям и их сообщениям. Однако, в зависимости от потребностей приложения в ведении журнала, подтверждения и других специальных задач обработки, вероятно, в повседневной работе будут использоваться несколько различных системных очередей.



3. Синхронная и асинхронная коммуникация

Связь в очереди по своей сути асинхронна, поскольку отправка сообщений в очередь и получение сообщений из неё осуществляется в разных процессах. Кроме того, операция receive может выполняться асинхронно, поскольку желающий получить сообщение может вызвать метод BeginReceive в любую заданную очередь и сразу продолжить выполнение других задач, не дожидаясь ответа. Это сильно отличается от того, что люди называют «синхронной коммуникацией».



В синхронной коммуникации отправитель запроса должен дождаться ответа от получателя, прежде чем выполнять другие задачи. Время ожидания отправителя полностью зависит от того, сколько времени требуется получателю для обработки запроса и отправки ответа.



4. Взаимодействие с очередями сообщений

Обработка сообщений и обмен сообщениями обеспечивают мощный и гибкий механизм межпроцессной коммуникации между серверными компонентами приложений. Они предлагают несколько преимуществ по сравнению с прямым вызовом между компонентами, включая:

Стабильность — сбои компонентов затрагивают сообщения гораздо меньше, чем прямые вызовы между компонентами, поскольку сообщения хранятся в очереди и остаются там до правильной обработки. Обработка сообщений похожа на обработку транзакций тем, что обработка сообщений гарантирована.
Приоритетизация сообщений — Более срочные или важные сообщения можно получить раньше относительно неважных, что позволяет гарантировать достаточное время ответа на критически важные приложения.
Офлайн-возможность — когда сообщения отправляются, их можно отправить в временную очередь и оставаться там до успешной доставки. Когда доступ к желаемой очереди недоступен по какой-либо причине, пользователь может продолжить действие. В то же время другие операции могут продолжаться так, как если бы сообщение было обработано, поскольку доставка сообщения гарантирована при восстановлении сетевого соединения.
Транзакционная обработка сообщений — Соединяйте несколько связанных сообщений в одну транзакцию, чтобы гарантировать, что сообщения доставляются последовательно, только один раз и могут быть успешно извлечены из очереди назначения. Если появляются ошибки, вся транзакция отменяется.
Безопасность — технология очереди сообщений, на которой основан компонент MessageQueue, использует Windows Security для обеспечения контроля доступа, аудита, а также шифрования и аутентификации сообщений, отправленных и полученных компонентом.


5. Написать простую программу для очереди сообщений в среде .Net

(1) Сначала установите сервисы очереди сообщений

Установите MSMQ через панель управления, на шаге «Добавить/Удалить программы» — «Добавить/Удалить компоненты Windows».

MSMQ можно установить как в режиме рабочей группы, так и в доменном режиме. Если установщик не находит сервер с очередью сообщений, предоставляющей услуги каталогов, её можно установить только в режиме рабочей группы, и очередь сообщений на этом компьютере поддерживает только создание приватных очередей и прямых соединений с другими компьютерами, использующими очереди сообщений.



(2) Настройка MSMQ

Открыть управление компьютером — очередь сообщений и создание очереди MSMQDemo в разделе Private Queues


(3) Написать код — просто продемонстрировать объект MSMQ

Класс MessageQueue — это обёртка вокруг «очереди сообщений». Класс MessageQueue предоставляет ссылку на очередь Message Queue. Вы можете задать путь к существующему ресурсу в конструкторе MessageQueue или создать новую очередь на сервере. Прежде чем вы сможете вызвать Отправить, Пик или Получить, необходимо связать новый экземпляр класса MessageQueue с существующей очередью.



MessageQueue поддерживает два типа поиска сообщений: синхронный и асинхронный. Синхронизированные методы Peek и Receive заставляют поток процесса ждать прибытия нового сообщения в очередь с определённым интервалом. Асинхронные методы BeginPeek и BeginReceive позволяют основной задаче приложения продолжать выполнение в отдельном потоке до того, как сообщение попадёт в очередь. Эти методы работают за счёт использования объектов обратного вызова и объектов состояния для облегчения передачи информации между потоками.


Скачать исходный код:

Туристы, если вы хотите увидеть скрытое содержание этого поста, пожалуйстаОтвет





Предыдущий:15 хорошо. .NET
Следующий:C#/.NET считывает исходный код хеш-информации торрент-торрента
Опубликовано 13.06.2021 20:54:46 |
ОК, ОК.
Опубликовано 22.02.2019 11:01:34 |
https://download.csdn.net/download/winrich/9585398
Опубликовано 21.07.2021 11:20:26 |
Хорошо-хорошо
Опубликовано 21.12.2016 23:04:53 |
Спасибо, арендодатель
Опубликовано 28.12.2016 19:20:26 |
Посмотрите этот текущий вариант, чтобы выполнить это упражнение
Опубликовано 14.07.2017 16:32:06 |
Спасибо, арендодатель。。。。。。。
Опубликовано 18.10.2017 14:26:45 |
Учитесь у руководителей групп
Опубликовано 24.10.2017 5:39:19 |
Учитесь
Опубликовано 18.11.2017 21:56:57 |
ОООООООООООООООО
Опубликовано 14.12.2017 14:04:20 |
На хорошие посты обязательно отвечают
Опубликовано 16.12.2017 21:49:55 |
213123saedwaeas
Опубликовано 17.12.2017 8:56:11 |
Посмотри, что говорят
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com