46.7.5. 平台事件
要发送平台事件,请使用 createSObject 操作。并设置消息正文可以是 JSON 字符串或 InputStream,带有键-值 data network- 软件仓库,在这种情况下 sObjectName 需要设置为事件的 API 名称,或使用适当的类名称从 AbstractDTOBase 进行扩展。
例如,使用 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" + exchange.getProperty(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" + exchange.getProperty(Exchange.TIMER_COUNTER);
in.setBody("{\"OrderNumber\":\"" + orderNumber + "\"}");
})
.to("salesforce:createSObject?sObjectName=Order_Event__e");
要接收平台事件,使用带有前缀 event/(或 / event/ )的 API 事件的使用者端点,例如:Salesforce :events/Order_Event_e。从该端点消耗的处理器将分别收到 org.apache.camel.component.salesforce.api.dto.PlatformEvent 对象或 org.cometd.bayeux.Message,具体取决于正文中的 rawPayload 为 false 或 true。
例如,使用最简单的形式来消耗一个事件:
PlatformEvent event = consumer.receiveBody("salesforce:event/Order_Event__e", PlatformEvent.class);