Также существует несколько схем, которые описывают то, как приложения, обменивающиеся сообщениями, устанавливают соединения и работают с провайдерами систем обмена сообщениями. Эти схемы определяют, будет ли приложение взаимодействовать с провайдером как отправитель сообщений, как получатель сообщений или в обоих этих качествах. Если сообщение выступает в ролях, как отправителя, так и получателя сообщений, то такая схема называется запрос-ответ. Схемы обмена сообщениями рассматриваются в следующих разделах более подробно.
Производители сообщений
В схеме с отправителем сообщений отправитель просто соединяется с провайдером, посылает сообщение, а затем отключается от провайдера. Поскольку отправителя не интересует, что произойдет с сообщением после того, как провайдер его принял, такая схема иногда называется «выстрелил и забыл», хотя более часто ее называют дейтаграммой.
Получатели сообщений
Получатели сообщений работают в двух режимах.
• Режим опроса.
В режиме опроса приложение-получатель подключается к провайдеру и явным образом получает сообщение из пункта назначения. Очевидно, что нет никакой гарантии, что сообщение в данный момент времени будет присутствовать в пункте назначения, так что получателю может потребоваться позже повторить попытку получения сообщения. Поэтому говорят, что получатель опрашивает пункт назначения.
• Режим приема.
В режиме приема взаимодействие с приложением-получателем инициирует провайдер системы обмена сообщениями, когда сообщение прибывает в пункт назначения. Приложение-получатель должно зарегистрировать у провайдера свою заинтересованность в получении сообщений, прибывающих в определенный пункт назначения.
Запрос-ответ
В схеме запрос-ответ участвуют приложения-отправители и приложения-получатели, которые одновременно выполняют функции отправителей и получателей сообщений. Отправитель инициирует процесс, посылая сообщение в пункт назначения в провайдере системы обмена сообщениями, а затем ждет ответа. Получатель принимает сообщение от провайдера, выполняет необходимую обработку и затем посылает ответ провайдеру. После этого отправитель получает от провайдера ответ.
В данной ситуации отправитель и получатель являются жестко связанными процессами, хотя они и взаимодействуют с использованием асинхронного обмена сообщениями. По этой причине данную схему часто называют псевдосинхронным обменом сообщениями.