В Fabric8 предпочтительным способом получения соединения ActiveMQ является mq -fabric profile, который предоставляет объект ActitveMQConnection через декларативные службы. Пример этого приведен на GitHub, который отлично работает.
Однако мне еще предстоит найти способ совместной работы Declarative Services и Blueprint Services в Fabric8 (или в любой среде OSGI, на самом деле), поэтому мое приложение OSGI должно использовать либо DS, либо схему. Смешивать оба варианта не представляется возможным.
Если вы хотите использовать план (что я и делаю), вы должны сначала создать брокер через веб-интерфейс, затем вернуться в консоль и ввести cluster-list, найдя порт, который Fabric8 назначил для брокер, а затем настройте соединение в плане следующим образом:
<bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://mydomain:33056" />
<property name="userName" value="admin" />
<property name="password" value="admin" />
</bean>
Хотя это работает, это не совсем удобно для развертывания, поскольку включает несколько ручных шагов, которых я хотел бы избежать, если это возможно. Основная проблема в том, что я не знаю, каким будет этот порт. Я просмотрел файлы конфигурации и нигде не нашел.
Существует ли более чистый и автоматизированный способ получения соединения ActiveMQ в Fabric8 с помощью схемы или мы должны использовать декларативные службы?