Events & Actions or Functions: Picking the right tool
This article will explain the differences between Events & Actions and Functions and which use cases suit each.
What are Events & Actions?
Events & Actions enables you to filter the real-time “events,” queue those events, and deliver them to a growing list of “actions.”
So, what is an “event”?
Events are generated by users and devices interacting with the PubNub platform, and anything that happens during that interaction could generate an event.
message publish event is triggered whenever a PubNub message is published and expect to see additional events added in the future.
So, what is an “action”?
An action is performed when an event is triggered and will send the event data to a remote endpoint. The catalog of actions is growing but, at launch, includes webhooks, Amazon SQS and Amazon Kinesis. All actions will send your data outside of PubNub to a third-party system that you control for additional processing.
That feels like a lot of data.
It can be, but Events & Actions features an extensive filter mechanism. You can choose between simple filters, which are easy to configure, or more advanced filtering based on JSONPath to cover all use cases. For more information on E&A filters, including how to filter on your JSON payload, please refer to our documentation's “configure Events & Actions” section.
What are Functions?
Functions allow you to capture various events on the PubNub platform and write serverless Node.JS code to handle those events. Functions are very flexible and enable you to transform, re-route, augment, filter, and even aggregate data.
Some oft-cited use cases for Functions show their more common uses:
Listen for the ‘before message publish’ event, intercept the message and moderate the message data to detect abusive language or profanity.
Listen for the ‘before file publish’ event and re-route any images to a moderation channel whose contents are potentially harmful.
Listen for the ‘after message publish’ event and forward messages to an external system to perform sentiment analysis on the chat, which is used frequently by customer support.
Listen for the ‘before message publish’ event and translate the language within the message or message parameters to perform on-the-fly translation.
When should you use Events & Actions?
Everything Events & Actions can do, you could also accomplish with Functions, so why choose E&A?
If you need to send real-time data moving through PubNub to a third-party system, Events & Actions should be your first choice. Specifically for this use case, E&A is more scalable and fault-tolerant.
Events & Actions is also a zero-code solution, so if your developers are busy doing other things (like adding real-time capabilities to your app using PubNub SDKs), then E&A is a good choice.
Some everyday use cases for which Events & Actions is ideal:
Many customer solutions sending real-time data over PubNub need to archive that data externally in data centers. Some examples:
Errors & authentication/permission issues generated by users and devices need to be saved to Investigate later problems
Auction bids need to be stored to maintain a record for legal purposes.
IoT device sensor data needs to be stored centrally in a long-term archive.
Real-time data processing:
Sometimes data that originates from PubNub needs to be routed to an external system for additional processing. Some examples:
An event such as a chat "super-like" (or similar chat features) or a winning auction bid will require additional processing and integration with a financial system.
When a smart sensor’s data goes outside a specified range, trigger an alert.
Important chat messages that require escalation are routed externally.
Using an external analytics platform, you can transfer data with little latency and perform analytics to understand your solution better. Some examples:
Sentiment analysis and metrics on chat messages to understand your customer experience
Using chat messages to train an AI bot
Reviewing geolocation coordinates to ensure routing algorithms are operating correctly
Should I change my existing app to use Events & Actions?
Ask yourself a couple of questions:
Question 1: Am I using a Function triggered by the ‘after publish’ event? Or am I subscribing to PubNub messages somewhere in my backend infrastructure?
If you have a Function that responds to the following events:
After Publish or Fire
And within that function, if you transfer that data outside of PubNub, you should consider transitioning this logic to Events & Actions. In this instance, E&A will be more scalable, fault-tolerant, and does not require any code to be written.
Alternatively, look for instances of:
Being called at your server side. The most common reason to subscribe for PubNub messages on your server is to reroute those messages off-domain. If this is you, consider transitioning this logic to Events & Actions, which you will find more scalable.
Question 2: Are any of my use cases suited to Events & Actions?
If your use cases pertain to storage, processing, or real-time data analysis, as detailed in the previous section, you should seriously consider using E&A.
If your solution transfers real-time data outside of PubNub for any reason, then E&A is likely the best way to achieve that.
When should you use Functions?
Although everything E&A can do, you could accomplish with Functions, the reverse is not true. Functions are more feature-rich than Events & Actions and should still be used for event-driven processing outside the specific use cases for E&A discussed in this article. If you need to perform any event-driven processing that does not involve transferring the data to an external server, continue to use Functions.
Functions support many synchronous (blocking) events, which allow you to transform data before it is sent to clients. If you are changing message data, including the chat moderation or language translation use cases given earlier, then you should continue to use Functions.
Suppose you need to perform custom business logic on the PubNub data (or metadata) before it reaches your external system, like aggregating data. In that case, you should continue to use Functions.
Since E&A only currently supports the message publish event, If you have existing functions that derive their data from different events, continue using Functions.
If you need to send real-time PubNub data to a third-party system, Events & Actions should be your first consideration. If you need to do anything else with your real-time data, use Functions. Whether you use E&A or Functions for your event-driven processing, PubNub gives you complete and flexible control over your data.
PubNub powers applications that enable low latency real-time user experiences with scalability in mind, from in-app chat apps & live events to data streaming, pub/sub, mobile push notifications, and HIPAA-compliant healthcare apps. PubNub supports over 50 SDKs, including Rest API, Java & mobile app APIs for Android and iOS. Please see our tutorials and open-source samples available on GitHub to learn more.