Get Started with Pub/Sub API
Pub/Sub API provides a single interface for publishing and subscribing to platform events, including real-time event monitoring events, and change data capture events. Based on gRPC API and HTTP/2, Pub/Sub API efficiently publishes and delivers binary event messages in the Apache Avro format.
|Available in: Enterprise, Performance, Unlimited, and Developer Editions|
The Pub/Sub API provides many benefits:
- Publishing, subscribing, and event schema retrieval all in one API.
- Final publish results of publish operations, and not intermediate queueing results.
- Flow control that lets you specify how many events to receive in a subscribe call based on event processing speed in the client.
- Scalable and secure publishing and delivery of platform events, change data capture events, and real-time event monitoring events.
- Real-time, highly performant data streaming that uses compression through HTTP/2.
- Support for 11 programming languages in the client that are offered by the gRPC API, such as Python, Java, Node, and C++. For all the supported languages, see https://grpc.io/docs/languages/.
- An active online developer community presence for gRPC.
- Bidirectional data streaming through the gRPC API. The client and the server can send a sequence of messages to each other using two independent streams.
- Cross-cloud integration capabilities enabling the development of event-driven apps that integrate across Salesforce clouds.
Simplify your development with Pub/Sub API by using a single API to work with events instead of using disparate APIs. This table compares the tasks that you perform with Pub/Sub API versus other APIs.
|Task||Can accomplish with Pub/Sub API||How to accomplish with other APIs|
|Publish platform events||Pub/Sub API||Data APIs: SOAP API, REST API, Bulk API|
|Subscribe to events: platform events, change data capture events, real-time event monitoring events, and standard events||Pub/Sub API||Streaming API|
|Get the event schema||Pub/Sub API||REST API|
Before Pub/Sub API was introduced, the only way to subscribe to events in an external client was with Streaming API. This table compares some features of the two subscription APIs.
|Pub/Sub API||Streaming API|
|Event Encoding||Binary (Apache Avro)||JSON|
|Protocol||gRPC and protocol buffers||CometD, an implementation of the Bayeux protocol|
|Subscription model||Pull-based—the client requests the number of events to receive as they become available in the event bus.||Push-based—the server delivers events as they become available in the event bus.|
|Subscription flow control||Client specifies how many events to receive for a Subscribe call based on event processing speed in the client.||Client doesn’t control the amount of events delivered from the server.|
|Publish status||Final publishing result returned indicates that the event was successfully published or that the publish failed.||Not supported with Streaming API. When using data APIs to publish events, the event queueing result is returned. When system resources are available, queued events are published.|
|Bitmap field data in change data capture events||Client has to decode the bitmap field data to JSON.||Streaming API decodes bitmap field data to JSON before delivering events to the client.|
Pub/Sub API enables you to build event-driven integration apps. Here are some examples of what you can do with the Pub/Sub API.
- Subscribe to Event Monitoring real-time events, and publish a platform event back into Salesforce to restrict a user’s profile when they log into Salesforce after working hours.
- Subscribe to change data capture events, and synchronize order data in an external inventory system.
- Subscribe to a standard platform event, such as AppointmentSchedulingEvent, and integrate with Google Calendar to update users’ calendars.
Using the Pub/Sub API, you can interface with the expanded and improved Salesforce event bus by publishing and subscribing to events. The event bus is a multitenant, multicloud event storage and delivery service based on a publish-subscribe model. The event bus is based on a time-ordered event log, which ensures that event messages are stored and delivered in the order that they’re received by Salesforce. Platform events and change data capture events are published to the event bus, where they’re stored temporarily. You can retrieve stored event messages from the event bus with the Pub/Sub API. Each event message contains the replay ID field, represented as
replay_id in the protocol specification. It’s an opaque ID that identifies the event in the stream and enables replaying the stream after a specific replay ID.
The expanded event bus service is built outside the main Salesforce CRM stack, which powers Sales Cloud and Service Cloud, Salsforce’s original products. As a result, the API provides cross-cloud integration capabilities between Sales Cloud and Service Cloud and other Salesforce clouds, such as Marketing Cloud, Commerce Cloud, and Tableau Analytics. It also provides enhanced scalability and performance. Developers can focus on building event-driven apps that scale and integrate across various Salesforce clouds.
- Salesforce Architects Blog: The New Salesforce Event Bus
- Salesforce Engineering Blog: How Apache Kafka Inspired Our Platform Events Architecture