286.4.4. 플랫폼 이벤트

플랫폼 이벤트를 내보내려면 createSObject 작업을 사용합니다. 이 경우 sObjectName 은 이벤트의 API 이름 또는 AbstractDTOBase에서 확장하는 클래스 또는 이벤트에 대한 적절한 클래스 이름을 사용하여 메시지 본문을 JSON 문자열 또는 InputStream으로 설정할 수 있습니다.

예를 들어 DTO를 사용합니다.

class Order_Event__e extends AbstractDTOBase {
  @JsonProperty("OrderNumber")
  private String orderNumber;
  // ... other properties and getters/setters
}

from("timer:tick")
    .process(exchange -> {
        final Message in = exchange.getIn();
        String orderNumber = "ORD" + String.valueOf(in.getHeader(Exchange.TIMER_COUNTER));
        Order_Event__e event = new Order_Event__e();
        event.setOrderNumber(orderNumber);
        in.setBody(event);
    })
    .to("salesforce:createSObject");

또는 JSON 이벤트 데이터 사용:

from("timer:tick")
    .process(exchange -> {
        final Message in = exchange.getIn();
        String orderNumber = "ORD" + String.valueOf(in.getHeader(Exchange.TIMER_COUNTER));
        in.setBody("{\"OrderNumber\":\"" + orderNumber + "\"}");
    })
    .to("salesforce:createSObject?sObjectName=Order_Event__e");

플랫폼 이벤트를 수신하려면 이벤트/(또는 / event/ ) 접두사가 붙은 플랫폼 이벤트의 API 이름이 있는 소비자 끝점을 사용합니다(예: salesforce:events/Order_Event_e ). 해당 끝점에서 사용하는 프로세서는 각각 false 또는 truerawPayload 에 따라 org.apache.camel.component.salesforce.api.dto.PlatformEvent 개체 또는 org.cometd.bayeux.Message 를 각각 수신하게 됩니다.

예를 들어, 하나의 이벤트를 사용하기 위한 가장 간단한 양식:

PlatformEvent event = consumer.receiveBody("salesforce:event/Order_Event__e", PlatformEvent.class);