2017-06-21 12 views
1

私はBluemix Message Hubに接続するリバティーアプリを持っています。それはローカルでうまく動作しますが、私はBluemix Libertyからリバティーアプリを実行するとうまくいかないのです。私はhttps://github.com/ibm-messaging/message-hub-samples/tree/master/kafka-java-liberty-sampleの例に従っており、実行時にserver.xmlのusername/pwを変更します。BlueMix MessageHubに接続できませんBluemix Libertyから

いくつかの試行錯誤の後、私はserver.xmlのkafka username/pwをハードコードすると、BluemixLibertyがMsgHubに接続することに気付きました。この例のようにkafka username/pwを "ホットスワップ"すると、動作しなくなり、カフカに接続することはありません(サービスを再起動しなくても再接続しません)。私はCFを使って私のサービスにログインしてチェックしました。sever.xmlにはusername/pwが正しく交換されています。

この機能はBluemix Libertyでサポートされていますか?もしそうでなければ、私はプロダクションユーザ/ pwをハードコードしないように、どのようにしてvcap-servicesを適切に使うべきでしょうか?

答えて

1

私は、MessageHubのkafka-java-liberty-sampleをBluemixに再デプロイし、正常に動作することを確認しました。 資格情報の置き換えが行われる前にserver.xmlが読み取られた場合、アプリケーションが正常に動作しない理由の1つになる可能性があります。このサンプルでは、​​JAAS構成が設定される前にテキスト置換が行われます。

しかし、あなたは別のより良いアプローチをとることができます。 Kafkaの0.10.2クライアントを使用すると、グローバルなJAAS構成(プレーンなJavaアプリケーションではjaas.confファイル、Libertyのserver.xmlでは<jaasLoginContextEntry>)を使用する必要はありません。

<jaasLoginContextEntry></jaasLoginModule>の両方のセクションをserver.xmlから削除して、そこでの交換を避けることができます。

消費者とプロデューサのPropertiessasl.jaas.configのユーザー名とパスワードが含まれています(VCAP_SERVICESから取得)。

http://kafka.apache.org/documentation/#security_sasl_plain_clientconfig

例えば参照実際のUSERNAMEとPASSWORDで次のようなプロパティ ";がそのまま存在することに注意してください。

sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="USERNAME" password="PASSWORD";

https://github.com/ibm-messaging/message-hub-samples/pull/17 (私たちは今、分岐が https://github.com/edoardocomar/message-hub-samples/tree/liberty-fixed-serverxmlであるため、すぐにこのPRをマージします)

+0

ありがとう参照してください。私はsasl configを試みます。私のserver.xmlはスプリングの自動配線中に書かれており、メインアプリケーションが起動するまで使用されないので、もう一度server.xmlをスワップアップすることはできません。理由を理解することができます。 – kyl

+0

プロパティにユーザー名/パスワードを追加すると、 – kyl

+0

が変更されました。 https://github.com/ibm-messaging/message-hub-samples/tree/master/kafka-java-liberty-sample –

関連する問題