42.7.5. 平台事件
要发出平台事件,请使用 createSObject
操作。然后,设置消息正文可以是 JSON 字符串或 InputStream,它带有键-value datagradle-jaxbin,该 case sObjectName
需要设置为事件的 API 名称,或者一个从 AbstractDTOBase(带有适当类名称)的类(tag)来扩展事件的类。
例如,使用 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/
)前缀为 platform 事件的
API 名称,例如:ifcfg :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);