KnativeBrokerPubSub
Class: KnativeBrokerPubSub<T, K>
Defined in: cloudevents/src/services/knativebrokerpubsub.service.ts:80
Publish CloudEvents to a Knative Eventing Broker, and consume the ones a Trigger delivers
sendMessage posts the event to the Broker ingress in binary content mode; a non-2xx answer
fails it. Knative is push-based: consume registers the callback on the Webda/CloudEventsReceiver
named by receiver (every event the receiver accepts, its filters apply) instead of polling, so a
Trigger with the wanted filter must deliver to it. size() is unsupported and returns 0: a Broker
has no readable backlog.
"Events": { "type": "Webda/KnativeBrokerPubSub", "namespace": "apps", "broker": "default" }
Webda Modda
Extends
default<T,K>
Type Parameters
T
T extends CloudEvent = CloudEvent
K
K extends KnativeBrokerPubSubParameters = KnativeBrokerPubSubParameters
Constructors
Constructor
new KnativeBrokerPubSub<
T,K>(name,params):KnativeBrokerPubSub<T,K>
Defined in: core/lib/services/service.d.ts:72
Create a new Service instance
Service
Parameters
name
string
The name of the service
params
K
The parameters block define in the configuration file
Returns
KnativeBrokerPubSub<T, K>
Inherited from
PubSubService<T, K>.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
PubSubService._compiledCapabilities
[WEBDA_EVENTS]
[WEBDA_EVENTS]:
object
Defined in: core/lib/services/service.d.ts:50
Set the Webda events here
Inherited from
PubSubService.[WEBDA_EVENTS]
brokerEmitter?
protectedoptionalbrokerEmitter?:EmitterFunction
Defined in: cloudevents/src/services/knativebrokerpubsub.service.ts:87
The emitter, created on the first sendMessage
logger
protectedlogger:Logger
Defined in: core/lib/services/service.d.ts:59
Logger with class context
Inherited from
PubSubService.logger
metrics
protectedmetrics:object
Defined in: core/lib/queues/pubsubservice.d.ts:10
errors
errors:
Counter
messages_pending
messages_pending:
Gauge
messages_received
messages_received:
Counter
messages_sent
messages_sent:
Counter
processing_duration
processing_duration:
Histogram
Inherited from
PubSubService.metrics
name
readonlyname:string
Defined in: core/lib/services/iservice.d.ts:27
Name
Inherited from
PubSubService.name
parameters
readonlyparameters:K
Defined in: core/lib/services/iservice.d.ts:31
Parameters
Inherited from
PubSubService.parameters
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
PubSubService.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
PubSubService.filterConfiguration
Parameters
staticParameters: typeofServiceParameters
Defined in: core/lib/services/service.d.ts:46
Service parameters
Inherited from
PubSubService.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
PubSubService.__clean
addListener()
addListener<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:87
Add listener
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void | Promise<void>
the event listener
Returns
this
this for chaining
See
EventEmitter.addListener
Inherited from
PubSubService.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
PubSubService.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
PubSubService.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
PubSubService.computeParameters
consume()
consume(
callback,_eventPrototype?,onBind?):CancelablePromise
Defined in: cloudevents/src/services/knativebrokerpubsub.service.ts:180
Receive every event delivered to the receiver
Push-based: the callback runs in the request of the Trigger, its error refuses the delivery (500)
so the Broker retries it. eventPrototype is ignored, the events are CloudEvents already.
Parameters
callback
(event) => Promise<void>
receives the events
_eventPrototype?
new () => T
ignored
onBind?
() => void
called once the callback is registered
Returns
CancelablePromise
a promise whose cancel() removes the callback
Overrides
PubSubService.consume
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 never
Parameters
event
Key
the event name
data
object[Key]
the data to process
Returns
Promise<void>
Inherited from
PubSubService.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
PubSubService.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
PubSubService.getClientEvents
getEmitter()
getEmitter():
EmitterFunction
Defined in: cloudevents/src/services/knativebrokerpubsub.service.ts:127
The emitter posting to the Broker
Returns
EmitterFunction
the emitter
getMaxListeners()
getMaxListeners():
number
Defined in: core/lib/events/asynceventemitter.d.ts:91
Returns
number
Inherited from
PubSubService.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
PubSubService.getMetric
getName()
getName():
string
Defined in: core/lib/services/service.d.ts:218
Get service name
Returns
string
the result string
Inherited from
PubSubService.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
PubSubService.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
PubSubService.getOperationId
getParameters()
getParameters():
K
Defined in: core/lib/services/service.d.ts:82
Get the service parameters
Returns
K
the result
Inherited from
PubSubService.getParameters
getReceiver()
getReceiver():
CloudEventsReceiver
Defined in: cloudevents/src/services/knativebrokerpubsub.service.ts:158
The Webda/CloudEventsReceiver the consumers register on
Returns
the receiver
Throws
WebdaError.CodeError KNATIVE_RECEIVER_MISSING when the receiver service does not exist
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
PubSubService.getService
getState()
getState():
ServiceStates
Defined in: core/lib/services/service.d.ts:55
Get the current state
Returns
ServiceStates
the result
Inherited from
PubSubService.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
PubSubService.getUrl
init()
abstractinit():Promise<KnativeBrokerPubSub<T,K>>
Defined in: core/lib/services/service.d.ts:207
Will be called after all the Services are created
Returns
Promise<KnativeBrokerPubSub<T, K>>
Inherited from
PubSubService.init
initMetrics()
initMetrics():
void
Defined in: core/lib/queues/pubsubservice.d.ts:20
Returns
void
Inherited from
PubSubService.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
PubSubService.initOperations
listeners()
listeners(
eventName):Function[]
Defined in: core/lib/events/asynceventemitter.d.ts:151
Get all listeners for an event
Parameters
eventName
never
the event name
Returns
Function[]
the list of results
Inherited from
PubSubService.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
PubSubService.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
PubSubService.log
off()
off<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:127
Perform off
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.off
Inherited from
PubSubService.off
on()
on<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:111
Perform on
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
PubSubService.on
once()
once<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:103
Perform once
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.once
Inherited from
PubSubService.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
PubSubService.operationSchemaName
removeAllListeners()
removeAllListeners<
Key>(eventName?):this
Defined in: core/lib/events/asynceventemitter.d.ts:134
Remove all listeners
Type Parameters
Key
Key extends never
Parameters
eventName?
Key
the event name
Returns
this
this for chaining
See
EventEmitter.removeAllListeners
Inherited from
PubSubService.removeAllListeners
removeListener()
removeListener<
Key>(eventName,listener):this
Defined in: core/lib/events/asynceventemitter.d.ts:119
Remove listener
Type Parameters
Key
Key extends never
Parameters
eventName
Key
the event name
listener
(event) => void
the event listener
Returns
this
this for chaining
See
EventEmitter.removeListener
Inherited from
PubSubService.removeListener
resolve()
resolve():
this
Defined in: core/lib/services/service.d.ts:98
Resolve parameters and load metadata. @Route-declared routes are scanned
and registered by Router.discoverRoutes(services) from Core.init()
once every service has resolved — nothing to do per-service here.
Returns
this
the result
Inherited from
PubSubService.resolve
sendMessage()
sendMessage(
event):Promise<void>
Defined in: cloudevents/src/services/knativebrokerpubsub.service.ts:137
Post an event to the Broker
Parameters
event
T | CloudEventV1<unknown>
the event, a plain CloudEventV1 object is accepted and validated
Returns
Promise<void>
Overrides
PubSubService.sendMessage
setMaxListeners()
setMaxListeners(
n):this
Defined in: core/lib/events/asynceventemitter.d.ts:95
Parameters
n
number
Returns
this
Inherited from
PubSubService.setMaxListeners
size()
size():
Promise<number>
Defined in: cloudevents/src/services/knativebrokerpubsub.service.ts:148
Unsupported: a Broker has no readable backlog
Returns
Promise<number>
0
Overrides
PubSubService.size
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
PubSubService.stop
toJSON()
toJSON():
string
Defined in: core/lib/services/service.d.ts:200
Prevent service to be serialized
Returns
string
the result
Inherited from
PubSubService.toJSON
toString()
toString():
string
Defined in: core/lib/services/service.d.ts:91
Return service representation
Returns
string
the result
Inherited from
PubSubService.toString
transport()
transport(
message):Promise<{body:string;headers:Record<string,string>;status:number; }>
Defined in: cloudevents/src/services/knativebrokerpubsub.service.ts:99
Post a serialized event to the Broker ingress
The SDK httpTransport resolves whatever the status: this one fails on a non-2xx answer, so a
refused event is an error of sendMessage.
Parameters
message
Message
the serialized event
Returns
Promise<{ body: string; headers: Record<string, string>; status: number; }>
the status, headers and body of the answer
Throws
WebdaError.CodeError KNATIVE_BROKER_REJECTED on a non-2xx answer
unserialize()
unserialize<
L>(data,proto?):L
Defined in: core/lib/queues/pubsubservice.d.ts:32
Unserialize into class
Type Parameters
L
L
Parameters
data
string
the data to process
proto?
new () => L
the proto
Returns
L
the result
Inherited from
PubSubService.unserialize