2016-05-24 17 views
-1

私のプロジェクト "DE"では、snmp、DiameterService、Cliサービスなどのような多くのサービスがあります。私は、DE1、 DE3などを登録します。しかし、私はREST implementaionを介してサービスにアクセスしたいとは思っていません。RESTから離れてこれを行う方法は他にあります。休憩サービスなしでスプリングブートを使用してマイクロサービスを実装

<?xml version="1.0" encoding="UTF-8"?> 
    <service-config-list> 

    <service-config> 
     <service-name>SNMPService</service-name> 
     <service-class-name>snmpService</service-class-name> 
     <service-status>true</service-status> 
    </service-config> 
    <service-config> 
     <service-name>IPC_MSG</service-name> 
     service-status>true</service-status> 
    </service-config> 

<!-- 
<service-config> 
     <service-name>ControllerService</service-name> 
     <service-class-name>controllerService</service-class-name> 
     <service-status>false</service-status> 
    </service-config> 

<service-config> 
     <service-name>SubsNetworkNotfService</service-name> 
     <service-class-name>subsNetworkNotfService</service-class-name 
     <service-status>false</service-status> 
    </service-config> -->   
    <service-config> 
     <service-name>TariffCheckService</service-name> 
     <service-class-name>tariffCheckService</service-class-name> 
     <service-status>true</service-status> 
    </service-config> 
    <service-config> 
     <service-name>DiameterService</service-name> 
     <service-class-name>diameterService</service-class-name> 
     <service-status>true</service-status> 
    </service-config> 


    <service-config> 
     <service-name>CLIService</service-name> 
     <service-class-name>cliService</service-class-name> 
     <service-status>false</service-status> 
    </service-config> 
+0

「あなたのようなサービスがたくさんある...」と言ったらどういう意味ですか?実装の詳細をいくつか共有できますか? – miensol

+0

@miensol:詳細を追加しました。 –

答えて

0

ユーレカレジストリは名前だけの変換に使用され、あなたが実際にユーレカを使用してサービスにアクセスすることはできません。

名前を手動で解決したい場合は、それを行うことができます。 Autowire LoadBalancerClientを入力し、balancerClient.choose("service-id")を使用して実際の宛先を取得することができます。例えば

ServiceInstance instance = balancerClient.choose("my-microservice"); 

// Retrieve host name or IP address 
instance.getHost(); 

// Creates an URI, replacing the service ID with the actual hostname 
balancerClient.reconstructURI(instance, new URI("http://my-microservice/foo/bar"); 

しかし、のような、私はあなたの目標はユーレカを通して、あなたのサービスと通信することである場合にはユーレカがために作られているものではありませんから、その後、それが不可能だ、と述べました。

+0

ありがとうございますg00glen00b.私のサービスはユーレカを通じてサービスの詳細を取得した後に通信しますが、メカニズムはRESTの実装とは異なるものでなければなりません。 –

+0

あなたのマイクロサービスはRESTとは異なるものを使うべきですか、ユーレカが何か違うものを使うことができるということを意味しますか? – g00glen00b

+0

私のサービスはお互いに通信しながら、いくつかのdiffを使うべきです。 RESTよりmech。私のプロジェクトはDEです。私はsnmpサービス用のマイクロサービスDE1を作成し、同様にeurekaに自身を登録するcliサービス用のDE2を作成します。それから1つのマイクロサービスは、DE3がレジストリからサービスの詳細を取得し、それらにアクセスすると言います。アクセスする部分は、RESTなしでやりたいと思います。私は春のブートを使用しています。 –

0

私はこの時点であなたの質問に答えますが、とにかく思っています。 マイクロサービスの通信が同期していないため、オーケストレーションパターンが発生します。あなたが探しているのは、メッセージング(例えば、AMQP)とイベントソーシングで達成される振り付けパターンです。 多くの例があります(いつものように)Fowler excellent descriptionに頼ることができます。 振り付けの上で流行っていることは、ユーレカを方程式から外すことです。 Netflixコンポーネントは、このパターンのための簡単なソリューションまたは実装を提供しません。

関連する問題