2017-02-01 2 views
0

archetype cdi-camel-mq-archetypeを使用して、OpenShift上で動作するアプリケーションを独自の名前空間でテストしようとしています。このアプリケーションで、同じOpenShiftクラスタ上の別の名前空間に存在するメッセージブローカーを使用したいとします。私はOpenShift上でアプリケーションを実行しているとき、私はPODのログに次のエラーを参照してください。cdi-camelで外部OpenShift名前空間を使用する方法

java.lang.RuntimeException:Beanの作成:com.demo.mqdemotest.ActiveMQComponentFactory @Factoryアノテーション付きメソッドの処理に失敗しました。サービス:broker-tcpのためのタイプorg.apache.activemq.ActiveMQConnectionFactoryのBeanを検索できませんでした。

原因:java.lang.RuntimeException:@Factory注釈付きメソッドの処理に失敗しました:beanでの作成:com.demo.mqdemotest.mq.ActiveMQConfigurer。 service broker-tcpを検索できませんでした。

によって引き起こさ:java.lang.IllegalArgumentExceptionが:名前空間でブローカー-TCP:いいえkubernetesサービスは、名前のために見つかりませんでしたヌル

は私のブローカーが私の中に住んでいる名前空間を注入する方法はありますアプリケーション(ファブリック8のCDiドキュメントでこれを行う方法はありません)どうすれば私は期待通りにこれを動作させることができますか?

答えて

1

2つのオプションがあります。あなたの設定に応じて:あなたは別のプロジェクトにルートとしてあなたのサービスを公開し、それを消費することができ

のネットワークに参加することができますあるプロジェクトから別のプロジェクトに直接サービスを提供することができます。

OpenShiftインストールでフラットなネットワークがあり、名前空間の分離がない場合は、プロジェクト間でサービスを参照する方法が問題になることがあります。ネットワーク上の

oc get svc -n mq-demo 

詳細は、次のものがありますあなたのmq-demoランでサービスを取得するには

<service>.mq-demo.svc.cluster.local:<port> 

:あなたはcamel-mqプロジェクト内にある場合は

は、あなたは、URLを使用してmq-demoプロジェクトからサービスを使用することができますここにあります:OpenShift Origin: Networking

次の可能性 - 例外メッセージに基づいて。おそらく、broker-tcpサービスが存在する名前空間を指定する必要があります。

+0

ocがネットネームスペースを返すのは何ですか? –

+0

ありがとう、これは私のために働いた: tcp:// .svc.cluster.local: nerdyoutdoorsman

関連する問題