Я не думаю, что у вас есть какая-либо более серьезная альтернатива для определения размера сообщения JMS, чем измерение его сериализованного размера.
Но вы можете добавить некоторые оптимизации, если хотите.Существует несколько типов сообщений (например, MapMessage, ObjectMessage, TextMessage).
Размер текстового сообщения - это длина его текста.Размер сообщения карты - это общий размер всех его полей.Поля являются примитивами или java.util.Date, поэтому их измерение не является проблемой.Сообщение объекта содержит сериализуемый объект, поэтому вы можете измерить его размер, записав в ByteOutputStream.
Я думаю, что реализация утечек, использующих JMS, может быть упрощена, если вы используете скрытую функцию большинства провайдеров JMS для отправки отложенных сообщений.Вы можете измерить сообщение при постановке в очередь и решить, когда вы хотите, чтобы подписчик получил его.Пожалуйста, прочитайте здесь, чтобы узнать, как отправлять отложенные сообщения: http://alexradzin.blogspot.com/2010/10/send-delayed-jms-messages.html