8.12. 서비스 호출


8.12.1. 개요

Camel 2.18부터 사용 가능합니다.

서비스 호출 패턴을 사용하면 분산 시스템에서 원격 서비스를 호출할 수 있습니다. 호출할 서비스는 Kubernetes, Consul, etcd 또는 Zookeeper와 같은 서비스 레지스트리에서 조회됩니다. 패턴은 서비스 레지스트리의 구성을 서비스 호출과 구분합니다.

Maven 사용자는 서비스 레지스트리를 사용하려면 종속성을 추가해야 합니다. 다음과 같은 가능성이 있습니다.

  • camel-consul
  • Camel-etcd
  • Camel-kubenetes
  • Camel-ribbon

8.12.2. 서비스 호출 구문

서비스를 호출하려면 다음과 같이 서비스 이름을 참조하십시오.

from("direct:start")
    .serviceCall("foo")
    .to("mock:result");

다음 예제에서는 서비스를 호출하는 XML DSL을 보여줍니다.

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="direct:start"/>
    <serviceCall name="foo"/>
    <to uri="mock:result"/>
  </route>
</camelContext>

이 예제에서 Camel은 서비스 레지스트리와 통합된 구성 요소를 사용하여 foo 라는 이름으로 서비스를 조회합니다. 조회는 원격 서비스를 호스팅하는 활성 서버 목록을 참조하는 IP:PORT 쌍 세트를 반환합니다. 그런 다음 Camel은 사용할 서버를 무작위로 선택하여 선택한 IPPORT 번호로 Camel URI를 빌드합니다.

기본적으로 Camel은 HTTP 구성 요소를 사용합니다. 위의 예에서 호출은 다음과 같이 동적 toD 엔드포인트에서 호출하는 Camel URI로 확인됩니다.

toD("http://IP:PORT")
<toD uri="http:IP:port"/>

URI 매개변수를 사용하여 서비스를 호출할 수 있습니다(예: beer=yes ):

serviceCall("foo?beer=yes")
<serviceCall name="foo?beer=yes"/>

컨텍스트 경로를 제공할 수도 있습니다. 예를 들면 다음과 같습니다.

serviceCall("foo/beverage?beer=yes")
<serviceCall name="foo/beverage?beer=yes"/>

8.12.3. 서비스 이름을 URI로 변환

표시된 대로 서비스 이름은 Camel 엔드포인트 URI로 확인됩니다. 다음은 몇 가지 추가 예입니다. 은 Camel URI의 해상도를 보여줍니다.

serviceCall("myService") -> http://hostname:port
serviceCall("myService/foo") -> http://hostname:port/foo
serviceCall("http:myService/foo") -> http:hostname:port/foo
<serviceCall name="myService"/> -> http://hostname:port
<serviceCall name="myService/foo"/> -> http://hostname:port/foo
<serviceCall name="http:myService/foo"/> -> http:hostname:port/foo

확인된 URI를 완전히 제어하려면 원하는 Camel URI를 지정하는 추가 URI 매개변수를 제공합니다. 지정된 URI에서 IP:PORT 로 확인되는 서비스 이름을 사용할 수 있습니다. 다음은 몇 가지 예입니다.

serviceCall("myService", "http:myService.host:myService.port/foo") -> http:hostname:port/foo
serviceCall("myService", "netty4:tcp:myService?connectTimeout=1000") -> netty:tcp:hostname:port?connectTimeout=1000
<serviceCall name="myService" uri="http:myService.host:myService.port/foo"/> -> http:hostname:port/foo
<serviceCall name="myService" uri="netty4:tcp:myService?connectTimeout=1000"/> -> netty:tcp:hostname:port?connectTimeout=1000

위의 예제에서는 myService 라는 서비스를 호출합니다. 두 번째 매개 변수는 해결된 URI의 값을 제어합니다. 첫 번째 예제에서는 serviceName.hostserviceName.port 를 사용하여 IP 또는 PORT를 나타냅니다. serviceName 만 지정하면 IP:PORT 로 확인됩니다.

8.12.4. 서비스를 호출하는 구성 요소 구성

기본적으로 Camel은 HTTP 구성 요소를 사용하여 서비스를 호출합니다. 다음 예제와 같이 HTTP4 또는 Netty4 HTTP와 같은 다른 구성 요소 사용을 구성할 수 있습니다.

KubernetesConfigurationDefinition config = new KubernetesConfigurationDefinition();
config.setComponent("netty4-http");

// Register the service call configuration:
context.setServiceCallConfiguration(config);

from("direct:start")
    .serviceCall("foo")
    .to("mock:result");

다음은 XML DSL의 예입니다.

&lt;camelContext xmlns="http://camel.apache.org/schema/spring">
  &lt;kubernetesConfiguration id="kubernetes" component="netty4-http"/>
  &lt;route>
    &lt;from uri="direct:start"/>
    &lt;serviceCall name="foo"/>
    &lt;to uri="mock:result"/>
  &lt;/route>
&lt;/camelContext>

8.12.5. 모든 구현에서 공유하는 옵션

다음 옵션은 각 구현에 사용할 수 있습니다.

옵션

기본값

설명

clientProperty

 

사용 중인 서비스 호출 구현에 고유한 속성을 지정합니다. 예를 들어, journalctl 구현을 사용하는 경우 클라이언트 속성은 com.netf Cryostat.client.config.CommonClientConfigKey 에서 정의됩니다.

component

http

원격 서비스를 호출하는 데 사용할 기본 Camel 구성 요소를 설정합니다. netty4-http, jetty, restlet 또는 기타 구성 요소와 같은 구성 요소 사용을 구성할 수 있습니다. 서비스에서 HTTP 프로토콜을 사용하지 않는 경우 mqtt, jms, amqp와 같은 다른 구성 요소를 사용해야 합니다. 서비스 호출에 URI 매개변수를 지정하면 이 매개변수에 지정된 구성 요소가 기본값 대신 사용됩니다.

loadBalancerRef

 

사용할 사용자 지정 org.apache.camel.spi.ServiceCallLoadBalancer 로 참조를 설정합니다.

serverListStrategyRef

 

사용할 사용자 지정 org.apache.camel.spi.ServiceCallServerListStrategy 로 참조를 설정합니다.

8.12.6. Kubernetes를 사용할 때 서비스 호출 옵션

Kubernetes 구현에서는 다음 옵션을 지원합니다.

옵션

기본값

설명

apiVersion

 

클라이언트 조회를 사용할 때 Kubernetes API 버전입니다.

caCertData

 

클라이언트 조회를 사용할 때 인증 기관 데이터를 설정합니다.

caCertFile

 

클라이언트 조회를 사용할 때 파일에서 로드되는 인증 기관 데이터를 설정합니다.

clientCertData

 

클라이언트 조회를 사용할 때 클라이언트 인증서 데이터를 설정합니다.

clientCertFile

 

클라이언트 조회를 사용할 때 파일에서 로드되는 클라이언트 인증서 데이터를 설정합니다.

clientKeyAlgo

 

클라이언트 조회를 사용할 때 RSA와 같은 클라이언트 키 저장소 알고리즘을 설정합니다.

clientKeyData

 

클라이언트 조회를 사용할 때 클라이언트 키 저장소 데이터를 설정합니다.

clientKeyFile

 

클라이언트 조회를 사용할 때 파일에서 로드되는 클라이언트 키 저장소 데이터를 설정합니다.

clientKeyPassphrase

 

클라이언트 조회를 사용할 때 클라이언트 키 저장소 암호를 설정합니다.

dnsDomain

 

dns 조회에 사용할 DNS 도메인을 설정합니다.

lookup

환경

서비스를 찾는 데 사용되는 전략 선택 조회 전략에는 다음이 포함됩니다.

  • 환경 변수를 사용합니다.Use environment variables.
  • DNS Cryostat- Cryostat DNS 도메인 이름을 사용합니다.
  • Java 클라이언트를 사용하여 Kubernetes 마스터 API를 호출하고 서비스를 적극적으로 호스팅하는 서버를 쿼리합니다.

masterUrl

 

클라이언트 조회를 사용할 때 Kubernetes 마스터의 URL입니다.

네임스페이스

 

사용할 Kubernetes 네임스페이스입니다. 기본적으로 네임스페이스의 이름은 환경 변수 KUBERNETES_MASTER 에서 가져옵니다.

oauthToken

 

클라이언트 조회를 사용할 때 인증에 OAUTH 토큰(사용자 이름/암호 대신)을 설정합니다.

암호

 

클라이언트 조회를 사용할 때 인증 암호를 설정합니다.

trustCerts

false

클라이언트 조회를 사용할 때 신뢰 인증서 검사를 설정할지 여부를 설정합니다.

사용자 이름

 

클라이언트 조회를 사용할 때 인증 사용자 이름을 설정합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.