17장. Groovy

17.1. 개요

Groovy는 오브젝트를 빠르게 구문 분석할 수 있는 Java 기반 스크립팅 언어입니다. Groovy 지원은 camel-groovy 모듈의 일부입니다.

17.2. script 모듈 추가

경로에서 Groovy를 사용하려면 예 17.1. “camel-groovy 종속성 추가” 과 같이 camel-groovy 에 대한 종속 항목을 프로젝트에 추가해야 합니다.

예 17.1. camel-groovy 종속성 추가

<!-- Maven POM File -->
<properties>
  <camel-version>2.23.2.fuse-790054-redhat-00001</camel-version>
  ...
</properties>

<dependencies>
  ...
  <dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-groovy</artifactId>
    <version>${camel-version}</version>
  </dependency>
</dependencies>

17.3. 정적 가져오기

애플리케이션 코드에서 groovy() 정적 메서드를 사용하려면 Java 소스 파일에 다음 import 문을 포함합니다.

import static org.apache.camel.builder.script.ScriptBuilder.*;

17.4. 기본 제공 속성

표 17.1. “groovy 속성” Groovy를 사용할 때 액세스할 수 있는 기본 제공 속성을 나열합니다.

표 17.1. groovy 속성

속성유형현재의

context

org.apache.camel.CamelContext

Camel 컨텍스트

exchange

org.apache.camel.Exchange

현재 교환

request

org.apache.camel.Message

IN 메시지

응답

org.apache.camel.Message

OUT 메시지

속성

org.apache.camel.builder.script.PropertiesFunction

확인 방법과 함께 작동하여 스크립트 내에서 속성 구성 요소를 더 쉽게 사용할 수 있습니다.

ENGINE_SCOPE 에서 모두 설정된 속성입니다.

17.5. 예제

예 17.2. “Groovy를 사용하는 경로” Groovy 스크립트를 사용하는 두 개의 경로를 보여줍니다.

예 17.2. Groovy를 사용하는 경로

<camelContext>
  <route>
    <from uri="direct:items" />
    <filter>
      <language language="groovy">request.lineItems.any { i -> i.value > 100 }</language>
      <to uri="mock:mock1" />
    </filter>
  </route>
  <route>
    <from uri="direct:in"/>
    <setHeader headerName="firstName">
      <language language="groovy">$user.firstName $user.lastName</language>
    </setHeader>
    <to uri="seda:users"/>
  </route>
</camelContext>

17.6. 속성 구성 요소 사용

속성 구성 요소에서 속성 값에 액세스하려면 다음과 같이 기본 제공 속성 속성에서 resolve 메서드를 호출합니다.To access a property value from the properties component, invoke the resolve method on the built-in properties attribute, as follows:

.setHeader("myHeader").groovy("properties.resolve(PropKey)")

여기서 PropKey 는 확인하려는 속성의 키이며 키 값은 String 유형의 키입니다.

속성 구성 요소에 대한 자세한 내용은 Apache Camel 구성 요소 참조 가이드의 속성을 참조하십시오.https://access.redhat.com/documentation/en-us/red_hat_fuse/7.9/html-single/apache_camel_component_reference/index#properties-component

17.7. Groovy Shell 사용자 정의

경우에 따라 사용자 지정 GroovyShell 인스턴스를 Groovy 표현식에서 사용해야 할 수도 있습니다. 사용자 정의 GroovyShell 을 제공하려면 org.apache.camel. Cryostat.groovy.GroovyShell SPI 인터페이스를 Camel 레지스트리에 추가합니다.

예를 들어, Spring 컨텍스트에 다음 8080을 추가하면 Apache Camel은 기본 정적 가져오기 대신 사용자 지정 정적 가져오기를 포함하는 사용자 지정 GroovyShell 인스턴스를 사용합니다.

public class CustomGroovyShellFactory implements GroovyShellFactory {

  public GroovyShell createGroovyShell(Exchange exchange) {
    ImportCustomizer importCustomizer = new ImportCustomizer();
    importCustomizer.addStaticStars("com.example.Utils");
    CompilerConfiguration configuration = new CompilerConfiguration();
    configuration.addCompilationCustomizers(importCustomizer);
    return new GroovyShell(configuration);
  }
 }