CloudEventsReceiver
Class: CloudEventsReceiver<T>
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:234
Receive CloudEvents over HTTP and dispatch them to handlers
The POST route accepts the three HTTP content modes of the CloudEvents binding: binary
(ce-* headers), structured (application/cloudevents+json) and batch
(application/cloudevents-batch+json). It is the sink of a Knative Trigger (the
Webda/KnativeDeployer triggers parameter generates them), of a CloudEvents Subscription, or
of any producer posting CloudEvents.
Response contract: 202 acknowledges the events (200 with the reply CloudEvent when a handler
returns one), 400 refuses a malformed or invalid event (the sender must not retry it) and a
handler failure answers 500 so the sender retries (Knative retries then dead-letters). Delivery is
at-least-once: handlers must be idempotent, dedupe only filters the retries reaching the same
replica.
Handlers are registered by exact type or predicate with subscribe(), or declared with the
@CloudEventHandler("com.acme.type") decorator on any service. The CloudEvents.Received,
CloudEvents.Handled and CloudEvents.Failed Webda events are emitted around the dispatch.
"CloudEventsReceiver": { "type": "Webda/CloudEventsReceiver", "url": "/cloudevents", "dedupe": true }
Webda Modda
Extends
Service<T,CloudEventsReceiverEvents>
Type Parameters
T
T extends CloudEventsReceiverParameters = CloudEventsReceiverParameters
Constructors
Constructor
new CloudEventsReceiver<
T>(name,params):CloudEventsReceiver<T>
Defined in: core/lib/services/service.d.ts:72
Create a new Service instance
Service
Parameters
name
string
The name of the service
params
T
The parameters block define in the configuration file
Returns
CloudEventsReceiver<T>
Inherited from
Service<T, CloudEventsReceiverEvents>.constructor
Properties
_compiledCapabilities
protected_compiledCapabilities:Record<string,any>
Defined in: core/lib/services/iservice.d.ts:50
Capabilities detected at compile-time from @WebdaCapability-tagged interfaces.
Populated during Service.resolve by reading the service's entry in
webda.module.json. Each key is a capability name (e.g., "request-filter"),
and the value is an empty object {} by default. Override getCapabilities
to provide capability-specific configuration or to conditionally disable capabilities.
See
getCapabilities
Inherited from
KnativeBrokerPubSub._compiledCapabilities
[WEBDA_EVENTS]
[WEBDA_EVENTS]:
CloudEventsReceiverEvents
Defined in: core/lib/services/service.d.ts:50
Set the Webda events here
Inherited from
Service.[WEBDA_EVENTS]
discovered
protecteddiscovered:WeakSet<object>
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:262
Services whose @CloudEventHandler methods are registered
filter?
protectedoptionalfilter?:FilterImplementation<Filter>
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:254
The resolved filters parameter
handlers
protectedhandlers:CloudEventHandlerRegistration[] =[]
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:250
The registered handlers, in registration order
logger
protectedlogger:Logger
Defined in: core/lib/services/service.d.ts:59
Logger with class context
Inherited from
metrics
protectedmetrics:object
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:240
duplicates
duplicates:
Counter
failed
failed:
Counter
filtered
filtered:
Counter
received
received:
Counter
rejected
rejected:
Counter
Overrides
Service.metrics
name
readonlyname:string
Defined in: core/lib/services/iservice.d.ts:27
Name
Inherited from
parameters
readonlyparameters:T
Defined in: core/lib/services/iservice.d.ts:31
Parameters
Inherited from
Service.parameters
seen
protectedseen:Map<string,number>
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:258
source + id of the handled events with their expiry, for dedupe
createConfiguration?
staticoptionalcreateConfiguration?: (params) =>any
Defined in: core/lib/services/iservice.d.ts:35
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
Service.createConfiguration
filterConfiguration?
staticoptionalfilterConfiguration?: (params) =>any
Defined in: core/lib/services/iservice.d.ts:39
Create configuration set by the application on load
Parameters
params
any
Returns
any
Inherited from
Service.filterConfiguration
Parameters
staticParameters: typeofServiceParameters
Defined in: core/lib/services/service.d.ts:46
Service parameters
Inherited from
Service.Parameters
Methods
__clean()
abstract__clean():Promise<void>
Defined in: core/lib/services/service.d.ts:224
Clean the service data, can only be used in test mode
Returns
Promise<void>
Inherited from
Service.__clean
addListener()
addListener<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:87
Add listener
Type Parameters
Key
Key extends keyof CloudEventsReceiverEvents
Parameters
eventName
Key
the event name
listener
(event) => void | Promise<void>
the event listener
Returns
this
this for chaining
See
EventEmitter.addListener
Inherited from
Service.addListener
addRoute()
protectedaddRoute(url,methods,executer,openapi?,override?):void
Defined in: core/lib/services/service.d.ts:177
Add a route dynamicaly
Parameters
url
string
of the route can contains dynamic part like {uuid}
methods
HttpMethodType[]
the HTTP methods
executer
Function
Method to execute for this route
openapi?
OpenAPIWebdaDefinition
the OpenAPI specification
override?
boolean
whether to override existing
Returns
void
Inherited from
Service.addRoute
authorizeClientEvent()
authorizeClientEvent(
_event,_context):boolean
Defined in: core/lib/services/service.d.ts:153
Authorize a public event subscription
Parameters
_event
string
the event name
_context
OperationContext
the execution context
Returns
boolean
true if the condition is met
Inherited from
Service.authorizeClientEvent
computeParameters()
computeParameters():
void
Defined in: core/lib/services/service.d.ts:77
Used to compute or derivate input parameter to attribute
Returns
void
Deprecated
Inherited from
Service.computeParameters
discoverHandlers()
discoverHandlers(
services):void
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:318
Register the @CloudEventHandler methods of services
Called with every service when the receiver initializes; call it for a service added afterwards. A service is discovered once.
Parameters
services
Iterable<AbstractService<ServiceParameters, { }>>
the services to scan
Returns
void
dispatch()
dispatch(
event,context):Promise<CloudEvent<undefined> |undefined>
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:458
Dispatch an event to its handlers
Parameters
event
CloudEvent
the event
context
WebContext
the request delivering it
Returns
Promise<CloudEvent<undefined> | undefined>
the reply of the first handler returning one
Throws
WebdaError.HttpError the error of a handler (500 unless the handler threw an HttpError)
emit()
emit<
Key>(event,data):Promise<void>
Defined in: core/lib/services/service.d.ts:213
Emit the event with data and wait for Promise to finish if listener returned a Promise
Type Parameters
Key
Key extends keyof CloudEventsReceiverEvents
Parameters
event
Key
the event name
data
CloudEventsReceiverEvents[Key]
the data to process
Returns
Promise<void>
Inherited from
Service.emit
getCapabilities()
getCapabilities():
Record<string,any>
Defined in: core/lib/services/iservice.d.ts:72
Return the capabilities of this service.
By default returns capabilities detected at compile-time from
Returns
Record<string, any>
the result
Webda Capability-tagged
interfaces in webda.module.json.
Override to disable capabilities based on configuration:
getCapabilities() {
const caps = super.getCapabilities();
if (!this.parameters.enabled) delete caps["request-filter"];
return caps;
}
Inherited from
Service.getCapabilities
getClientEvents()
getClientEvents():
string[]
Defined in: core/lib/services/service.d.ts:144
Return the events that an external system can subscribe to
Returns
string[]
the list of results
Inherited from
Service.getClientEvents
getDedupeKey()
protectedgetDedupeKey(event):string
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:412
Key of an event in the dedupe cache
Parameters
event
CloudEvent
the event
Returns
string
the key
getHandlers()
getHandlers(
event):CloudEventHandlerFunction<any>[]
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:363
Handlers of an event
Parameters
event
CloudEvent
the event
Returns
CloudEventHandlerFunction<any>[]
the handlers whose matcher accepts it
getMaxListeners()
getMaxListeners():
number
Defined in: core/lib/events/asynceventemitter.d.ts:91
Returns
number
Inherited from
Service.getMaxListeners
getMetric()
getMetric<
T>(type,configuration):T
Defined in: core/lib/services/service.d.ts:138
Add service name label
Type Parameters
T
T = Counter<string> | Gauge<string> | Histogram<string>
Parameters
type
CustomConstructor<T, [MetricConfiguration<T>]>
the type to look up
configuration
MetricConfiguration<T>
the configuration
Returns
T
the result
Inherited from
Service.getMetric
getName()
getName():
string
Defined in: core/lib/services/service.d.ts:218
Get service name
Returns
string
the result string
Inherited from
Service.getName
getOpenApiReplacements()
getOpenApiReplacements():
any
Defined in: core/lib/services/service.d.ts:182
Return variables for replacement in openapi
Returns
any
the result
Inherited from
Service.getOpenApiReplacements
getOperationId()
getOperationId(
id):string|undefined
Defined in: core/lib/services/service.d.ts:167
If undefined is returned it cancel the operation registration
Parameters
id
string
the identifier
Returns
string | undefined
the result
Inherited from
Service.getOperationId
getParameters()
getParameters():
T
Defined in: core/lib/services/service.d.ts:82
Get the service parameters
Returns
T
the result
Inherited from
Service.getParameters
getService()
getService<
T>(name):ServicesMap[T]
Defined in: core/lib/services/service.d.ts:131
Get a service by name
Type Parameters
T
T extends keyof ServicesMap
Parameters
name
T
the name to use
Returns
ServicesMap[T]
the result map
Deprecated
Use useService, might reconsider
Inherited from
Service.getService
getState()
getState():
ServiceStates
Defined in: core/lib/services/service.d.ts:55
Get the current state
Returns
ServiceStates
the result
Inherited from
Service.getState
getUrl()
getUrl(
url,_methods):string
Defined in: core/lib/services/service.d.ts:161
Return the full path url based on parameters
Parameters
url
string
relative url to service
_methods
HttpMethodType[]
in case we need filtering (like Store)
Returns
string
absolute url or undefined if need to skip the Route
Inherited from
Service.getUrl
init()
init():
Promise<CloudEventsReceiver<T>>
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:304
Register the @CloudEventHandler methods of every service
Returns
Promise<CloudEventsReceiver<T>>
Overrides
Service.init
initMetrics()
initMetrics():
void
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:267
Returns
void
Overrides
Service.initMetrics
initOperations()
initOperations():
void
Defined in: core/lib/services/service.d.ts:195
Init the operations from
Returns
void
Operation
decorators on this service
Inherited from
Service.initOperations
isDuplicate()
isDuplicate(
event):boolean
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:422
Whether dedupe already handled the event
Parameters
event
CloudEvent
the event
Returns
boolean
true when a handled event had the same source and id within dedupeTtl
listeners()
listeners(
eventName):Function[]
Defined in: core/lib/events/asynceventemitter.d.ts:151
Get all listeners for an event
Parameters
eventName
keyof CloudEventsReceiverEvents
the event name
Returns
Function[]
the list of results
Inherited from
Service.listeners
loadCapabilities()
protectedloadCapabilities():void
Defined in: core/lib/services/service.d.ts:120
Load capabilities from webda.module.json metadata into _compiledCapabilities.
Called during resolve after dependency injection. Reads the service's
type name from parameters, looks it up in the application's module metadata
(moddas or beans section), and populates _compiledCapabilities with an
empty object for each declared capability name.
Fails silently if the application is not available (e.g., in unit tests where services are instantiated without a full application context).
Returns
void
Example
// If webda.module.json contains:
// { "moddas": { "MyApp/HawkService": { "capabilities": ["request-filter", "cors-filter"] } } }
// Then after resolve(), this.getCapabilities() returns:
// { "request-filter": {}, "cors-filter": {} }
See
getCapabilities
Inherited from
Service.loadCapabilities
log()
log(
level, ...args):void
Defined in: core/lib/services/service.d.ts:236
Log operation
Parameters
level
WorkerLogLevel
to log
args
...any[]
additional arguments
Returns
void
Inherited from
Service.log
off()
off<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:127
Perform off
Type Parameters
Key
Key extends keyof CloudEventsReceiverEvents
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.off
Inherited from
Service.off
on()
on<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:111
Perform on
Type Parameters
Key
Key extends keyof CloudEventsReceiverEvents
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
Service.on
once()
once<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:103
Perform once
Type Parameters
Key
Key extends keyof CloudEventsReceiverEvents
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
Service.once
operationSchemaName()
protectedoperationSchemaName(method,side):string
Defined in: core/lib/services/service.d.ts:191
Schema of an operation side: <service name>.<method>.<side> when the application knows it, else the one the
build writes, <class>.<method>.<side>, for the class or its nearest ancestor that has it (a service configured
under another name than its class)
Parameters
method
string
the method name
side
"input" | "output"
input or output
Returns
string
the schema name
Inherited from
Service.operationSchemaName
parse()
parse(
context):Promise<{batch:boolean;events:CloudEvent<undefined>[]; }>
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:376
Parse the request into CloudEvents
Parameters
context
WebContext
the request
Returns
Promise<{ batch: boolean; events: CloudEvent<undefined>[]; }>
the events, and whether the request was a batch
Throws
WebdaError.BadRequest when the request is not a CloudEvent, or an invalid one
receive()
receive(
context):Promise<void>
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:552
Receive one event, or a batch, and dispatch them
A batch is acknowledged as a whole: a failing handler refuses the whole batch, the sender redelivers it.
Parameters
context
WebContext
the request
Returns
Promise<void>
remember()
protectedremember(event):void
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:440
Remember a handled event for dedupe
Parameters
event
CloudEvent
the event
Returns
void
removeAllListeners()
removeAllListeners<
Key>(eventName?):this
Defined in: core/lib/events/asynceventemitter.d.ts:134
Remove all listeners
Type Parameters
Key
Key extends keyof CloudEventsReceiverEvents
Parameters
eventName?
Key
the event name
Returns
this
this for chaining
See
EventEmitter.removeAllListeners
Inherited from
Service.removeAllListeners
removeListener()
removeListener<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:119
Remove listener
Type Parameters
Key
Key extends keyof CloudEventsReceiverEvents
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.removeListener
Inherited from
Service.removeListener
resolve()
resolve():
this
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:291
Returns
this
Overrides
Service.resolve
respond()
protectedrespond(context,replies,batch):void
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:515
Write the response: 202 without reply, 200 with the reply in binary mode (a batch of replies
in batch mode)
Parameters
context
WebContext
the request
replies
CloudEvent<undefined>[]
the replies of the handlers
batch
boolean
whether the request was a batch
Returns
void
setMaxListeners()
setMaxListeners(
n):this
Defined in: core/lib/events/asynceventemitter.d.ts:95
Parameters
n
number
Returns
this
Inherited from
Service.setMaxListeners
stop()
stop():
Promise<void>
Defined in: core/lib/services/service.d.ts:86
Shutdown the current service if action need to be taken
Returns
Promise<void>
Inherited from
Service.stop
subscribe()
subscribe<
D>(matcher,handler): () =>void
Defined in: cloudevents/src/services/cloudeventsreceiver.service.ts:346
Register a handler
Not named on: Service.on listens to the Webda events of the service.
Type Parameters
D
D = any
Parameters
matcher
exact type of the events, or a predicate
handler
receives the matching events
Returns
a function removing the handler
() => void
toJSON()
toJSON():
string
Defined in: core/lib/services/service.d.ts:200
Prevent service to be serialized
Returns
string
the result
Inherited from
Service.toJSON
toString()
toString():
string
Defined in: core/lib/services/service.d.ts:91
Return service representation
Returns
string
the result
Inherited from
Service.toString