Когда выбрать JMS API через API сокетов UDP или наоборот?

Каковы причины, которые могут побудить программиста использовать API Java JMS (Java Message Service) вместо API-интерфейса UDP пакета java.net в распределенном приложении Java или использовать API-интерфейс UDP вместо JMS API? Если возможно, приведите примеры приложений.

Ответ 1

UDP и JMS отличаются разными способами, и в основном, поскольку JMS обычно полагается на функции, присущие TCP (см. сравнение UDP и TCP, чтобы получить представление о различиях между двумя базовыми протоколами).

В основном UDP подходит для приложений, которые не требуют какой-либо надежности, упорядочивания, управления перегрузками или маршрутизации между сетями (поскольку многие маршрутизаторы с потребительским и коммерческим уровнем не пересылают UDP-пакеты). JMS предоставляет все эти функции, отсутствующие в UDP и более (например, транзакции, pub/sub и очередность, длительные подписки и т.д.).

UDP может быть подходящим для потоковой передачи больших объемов данных в локальной сети, где абсолютное качество не является требованием; JMS будет лучше для приложений, требующих надежной передачи сообщений между узлами глобальной сети. Кроме того, JMS скрывает детали сокетов, серверов, привязки и т.д. И предоставляет API высокого уровня, который лучше подходит для корпоративной интеграции.