ActiveMQ Надежная тема подключения дизайн мнения Мнения - PullRequest
2 голосов
/ 29 декабря 2011

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

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

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

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

1 Ответ

2 голосов
/ 30 декабря 2011

Полагаю, вы должны знать оба упомянутых критерия. Решение состоит в том, чтобы использовать пул соединений. В этом случае вы разделяете соединения и большую часть времени не создаете новое, так как пул обычно ограничен определенным количеством соединений (это мое предположение о том, как я бы это реализовал) - так что это не Не берите все ресурсы в JVM.

Взгляните на PooledConnectionFactory связанный раздел.

Кроме того, решение о сохранении соединений или их воссоздании полностью зависит от вашего сценария использования. Если вы планируете регулярно отправлять сообщения - совместное использование соединения является правильным решением, поскольку создание соединения и сеанса (я бы порекомендовал совместное использование сеансов, если это возможно при большом трафике) - довольно дорогие операции. Однако, если ваши сообщения будут отправляться не так часто (несколько раз в час? :)) - будет разумно не поддерживать неактивное соединение.

...