Сколько времени занимает нить, чтобы остановиться и выйти на ActiveMQConsumer
? При закрытии приложения возникает ошибка сегментации. То, что я выяснил, было связано с потоками ActiveMQ. Если я комментирую потребителя, проблема больше не присутствует. В настоящее время я использую cms::MessageConsumer
в activemq-cpp-library-3.9.4.
Я вижу, что activemq::core::ActiveMQConsumer
имеет функцию isClosed()
, которую я могу использовать, чтобы подтвердить, что потребитель закрыт, а затем переместитьвперед с удалением объектов, тем самым избегая ошибки сегментации. Я предполагаю, что это решит мою проблему. Но я хотел знать, каков правильный подход к этим объектам ActiveMQ, чтобы избежать проблем с потоками?
Я использовал один и тот же сеанс с потребителем и производителем, но когда брокер остановился и запустил повторное соединение ActiveMQ былодобавление тем. Я не использую аварийное переключение.
Поэтому я разделил сеанс для отправки и получения и создал экземпляр фабрики соединений, соединения и сеанса для каждого отдельно. Этот дизайн не имеет проблем, пока память приложений не очищается из-за ошибки сегментации, описанной выше.
Вот почему я хотел знать, когда мне следует использовать cms::MessageConsumer
против ActiveMQConsumer
?