Patent ID: 9098328
Filing Date: 2015-08-04
Classification: G06F

Abstract:
1. A method for performing event processing comprising: processing an event stream by an application executed by a computer system, the application comprising a plurality of event handlers, each event handler of the plurality of event handlers having an event key uniquely associated thereto and a slate object uniquely associated thereto, each event handler performing an event handling function with respect to events of the event stream having the event key of the each event handler, the event handling function including both of (a) updating a state of the slate object according to processing of each event of the event stream having the event key of the each event handler such that the slate object accumulates results of processing multiple events from the event stream having the event key of the each event handler and (b) publishing outputs to the event stream, the outputs indicating the state of the slate object; processing, by the computer system, using a particular event handler of the plurality of event handlers, a first portion of particular events of the event stream having the event key of the particular event handler and updating the state of the slate object of the particular event handler according to the first portion of the particular events; detecting an overload condition for the particular event handler; in response to detecting the overload condition, instantiating a plurality of partial handlers corresponding to the particular event handler; distributing a second portion of the particular events from the event stream having the event key of the particular event handler to the plurality of partial handlers; processing the second portion of the particular events to (a) update partial slate objects for each partial handler according to the event handling function such that the partial state object for each partial handler accumulates results of processing multiple events having the event key of the particular event handler and (b) generate partial output streams indicating states of the partial slate objects of each partial handler; aggregating the partial output streams of the plurality of partial handlers; and according to the aggregation, updating the state of the slate object of the particular event handler and publishing one or more aggregate output events to an output stream of the particular event handler, the one or more aggregate output events indicating the state of the slate object of the particular event handler.