Fabric8では、ActiveMQ 接続を取得するための推奨される方法はmq -fabric profileを使用することです。これは、Declarative Services を介して ActitveMQConnection オブジェクトを提供します。 この例は GitHubで提供されており、問題なく動作します。
ただし、Declarative Services と Blueprint Services が Fabric8 (または実際には任意の OSGI 環境) で連携する方法をまだ見つけていないため、私の OSGI アプリケーションは DS または blueprint を使用する必要があります。両方を混在させることはオプションではないようです。
ブループリントを使用したい場合 (私はそうしています)、まず Web UI からブローカーを作成し、コンソールに戻って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>
これは機能しますが、可能な限り避けたい手動の手順がいくつか含まれているため、展開に適しているとは言えません。主な問題は、そのポートがどうなるかわからないことです。設定ファイルをくまなく調べましたが、どこにも見つかりませんでした。
設計図を介して Fabric8 で ActiveMQ 接続を取得するためのよりクリーンで自動化された方法はありますか? それとも宣言型サービスを使用する必要がありますか?