#c #jms #activemq
#c #jms #activemq
Вопрос:
Я разрабатываю программное обеспечение, которое использует ActiveMQ
библиотеку C . Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь отправить сообщение, а сеть отключена, метод отправки (метод cms::MessageProducer
класса) блокируется навсегда, и в этом случае мне нужно восстановить управление.
Я использую постоянный режим доставки (это обязательно, я не могу этого избежать).
Ответ №1:
Устанавливаете ли вы время отправки при создании ActiveMQConnectionFactory
? По умолчанию установлено значение 0, что означает «бесконечный».
auto_ptr<ActiveMQConnectionFactory> connectionFactory(
new ActiveMQConnectionFactory( brokerURI ) );
connectionFactory->setSendTimeout( 1000 ); // number of milliseconds
// ...
// creating Session and MessageProducer as usually
Комментарии:
1. Большое спасибо! вы дали мне хороший намек. На самом деле я использую cms ::ConnectionFactory, а не ActiveMQConnectionFactory. Я не знаю, в чем разница между этими двумя классами. Кстати, вы знаете хороший учебник по ActiveMQ для cpp?
2. @CMorgan cms ::ConnectionFactory — это абстрактный класс, вы наверняка используете ActiveMQConnectionFactory, получая к нему доступ через cms ::ConnectionFactory (это интерфейс в java JMS API, это переводится в абстрактный класс C ). Для получения руководства проверьте, как JMS работает на Java (CMS, похоже, моделирует его точно так же), и загрузите исходный код библиотеки ActiveMQ C и посмотрите раздел «Примеры». О, кстати, не забудьте принять ответ, если он работает для вас.