Соединение ActiveMQ в Fabric8 с использованием Blueprint вместо DS

В 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 с помощью схемы или мы должны использовать декларативные службы?


person Aston    schedule 10.06.2014    source источник


Ответы (1)


Наткнулся на решение этой проблемы в fabric-camel-demo, в котором показано, как создать экземпляр компонента ActiveMQConnectionFactory в Fabric8 с помощью Blueprint.

<!-- use the fabric protocol in the brokerURL to connect to the ActiveMQ broker registered as default name -->
<!-- notice we could have used amq as the component name in Camel, and avoid any configuration at all,
as the amq component is provided out of the box when running in fabric -->
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="discovery:(fabric:default)"/>
    <property name="userName" value="admin"/>
    <property name="password" value="admin"/>
</bean>

Надеюсь это поможет!

person Aston    schedule 11.06.2014