(Отличный вопрос разработки API.)
Вы концептуально путаете «сообщение JMS» с содержанием вашего сообщения.
Да. Похоже, что это немного связано с адресом сообщения жизненного цикла через сеанс. Но если вы рассмотрите случай отключенного узла, это не так уж странно с точки зрения дизайна.
Существенный момент заключается в том, чтобы отметить «зачем клиенту создавать сообщения, если он не подключен?» при рассмотрении вопроса «что такое« сообщение », если оно удалено из метаданных JMS «? (Пример метаданных сообщения: порядок сообщений.)
Итак, в принципе, должно быть ясно, что за исключением метаданных (которые очень сильно связаны как с сеансом, так и с поставщиком), ваш «пользовательский контент» действительно не имеет никакого отношения к JMS. Другими словами, концептуально у вас есть кортеж:
{ [meta-data] : [user-content] }
Так что «сообщение» - это действительно вышеприведенный кортеж. user-content
на самом деле просто ваши данные. То есть, если вам предоставляется универсальный (не связанный / отключенный) интерфейс для общего «создания сообщений», все, что получается, - это (ненужное) создание «общих» «сообщений» (которые на самом деле просто оборачивают ваш контент) и не хватает всех необходимых «метаданных», которые сделали бы его правильным «JMS-сообщением». В какой-то момент это общее внеполосное сообщение необходимо «преобразовать» в правильное сообщение JMS, например, добавлены метаданные заказа, добавлена метка времени и т. д.
Что вы получили от этих «общих» сообщений «JMS»? (Ничего, кажется.)
Как таковое, создание сообщений из сеанса является концептуально более понятным и более эффективным для реализации.