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 (根据 rawPayloadfalsetrue )。

例如,使用最简单的形式来消耗一个事件:

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

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.