Оказывается, это ошибка пользователя. У меня было настроено несколько разных сеансов, и, переключаясь между моей IDE и Hermes, я каким-то образом закончил тестирование сеанса, в котором использовалась неправильная фабрика соединений.
После переключения на правильный сеанс все начало работать.
Для полноты картины я получил следующее:
В моем приложении Spring-Boot я определил свой bean-компонент BrokerService следующим образом:
@Bean
public BrokerService broker(
@Value("${spring.activemq.broker-url}") String brokerUrl,
@Qualifier("brokerTrustManagerFactory") TrustManagerFactory trustManagerFactory,
@Qualifier("brokerKeyManagerFactory") KeyManagerFactory keyManagerFactory,
@Qualifier("secureRandom") SecureRandom secureRandom
){
SslBrokerService brokerService = new SslBrokerService();
brokerService.addSslConnector(
brokerUrl,
keyManagerFactory.getKeyManagers(),
trustManagerFactory.getTrustManagers(),
secureRandom
);
return brokerService;
}
Вот как можно настроить фабрику соединений в клиентском приложении:
@Bean
ConnectionFactory connectionFactory(
@Value("${spring.activemq.broker-url}") String brokerUrl,
@Value("${spring.activemq.trustStorePath}") String trustStorePath,
@Value("${spring.activemq.trustStorePass}") String trustStorePass,
@Value("${spring.activemq.keyStorePath}") String keyStorePath,
@Value("${spring.activemq.keyStorePass}") String keyStorePass,
@Value("${client.key.pass}") String clientKeyPass
) {
ActiveMQSslConnectionFactory connectionFactory =
new ActiveMQSslConnectionFactory(brokerUrl);
connectionFactory.setTrustStore(trustStorePath);
connectionFactory.setTrustStorePassword(trustStorePass);
connectionFactory.setTrustStoreType("PKCS12");
connectionFactory.setKeyStore(keyStorePath);
connectionFactory.setKeyStorePassword(keyStorePass);
connectionFactory.setKeyStoreKeyPassword(clientKeyPass);
connectionFactory.setKeyStoreType("PKCS12");
return connectionFactory;
}
Надеюсь, кто-то сочтет этот ответ полезным. Обратите внимание, что имена свойств «spring.activemq. *» Не являются официальными именами свойств, распознаваемыми Spring-Boot. Это просто имена, которые, похоже, использовались во многих учебных курсах по Spring-boot activemq в Интернете.
Спасибо, Дэйв