bindings

package
v1.0.0-rc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2020 License: MIT Imports: 5 Imported by: 83

README

Bindings

Bindings provide a common way to trigger an application with events from external systems, or invoke an external system with optional data payloads. Bindings are great for event-driven, on-demand compute and help reduce boilerplate code.

To get started with bindings visit the How To Guide.

To view all the currently supported bindings visit: Dapr bindings.

For detailed binding specs visit Dapr binding specs.

Implementing a new binding

A compliant binding needs to implement one or more interfaces, depending on the type of binding (Input or Output):

Input binding:

type InputBinding interface {
	Init(metadata Metadata) error
	Read(handler func(*ReadResponse) error) error
}

Output binding:

An output binding can be used to invoke an external system and also to return data from it. Each output binding can decide which operations it supports. This information is communicated to the caller via the Operations() method.

type OutputBinding interface {
	Init(metadata Metadata) error
	Invoke(req *InvokeRequest) (*InvokeResponse, error)
	Operations() []OperationKind
}

When creating an Output Binding, a list of OperationKind items needs to be returned. For example, if running a component that takes in a SQL query and returns a result set, the OperationKind can be query.

While components are not restricted to a list of supported operations, it's best to use common ones if the operation kind falls under that operation definition. The list of common operations can be found here.

After implementing a binding, the specification docs need to be updated via a PR: Dapr docs.

Documentation

Index

Constants

View Source
const (
	// TTLMetadataKey defines the metadata key for setting a time to live (in seconds)
	TTLMetadataKey = "ttlInSeconds"
)

Variables

This section is empty.

Functions

func TryGetTTL

func TryGetTTL(props map[string]string) (time.Duration, bool, error)

TryGetTTL tries to get the ttl (in seconds) value for a binding

Types

type AppResponse

type AppResponse struct {
	Data        interface{}        `json:"data"`
	To          []string           `json:"to"`
	StoreName   string             `json:"storeName"`
	State       []state.SetRequest `json:"state"`
	Concurrency string             `json:"concurrency"`
}

AppResponse is the object describing the response from user code after a bindings event

type InputBinding

type InputBinding interface {
	// Init passes connection and properties metadata to the binding implementation
	Init(metadata Metadata) error
	// Read is a blocking method that triggers the callback function whenever an event arrives
	Read(handler func(*ReadResponse) error) error
}

InputBinding is the interface to define a binding that triggers on incoming events

type InvokeRequest

type InvokeRequest struct {
	Data      []byte            `json:"data"`
	Metadata  map[string]string `json:"metadata"`
	Operation OperationKind     `json:"operation"`
}

InvokeRequest is the object given to a dapr output binding

type InvokeResponse

type InvokeResponse struct {
	Data     []byte            `json:"data"`
	Metadata map[string]string `json:"metadata"`
}

InvokeResponse is the response object returned from an output binding

type Metadata

type Metadata struct {
	Name       string
	Properties map[string]string `json:"properties"`
}

Metadata represents a set of binding specific properties

type OperationKind

type OperationKind string

OperationKind defines an output binding operation

const (
	GetOperation    OperationKind = "get"
	CreateOperation OperationKind = "create"
	DeleteOperation OperationKind = "delete"
	ListOperation   OperationKind = "list"
)

Non exhaustive list of operations. A binding can add operations that are not in this list.

type OutputBinding

type OutputBinding interface {
	Init(metadata Metadata) error
	Invoke(req *InvokeRequest) (*InvokeResponse, error)
	Operations() []OperationKind
}

OutputBinding is the interface for an output binding, allowing users to invoke remote systems with optional payloads

type ReadResponse

type ReadResponse struct {
	Data     []byte            `json:"data"`
	Metadata map[string]string `json:"metadata"`
}

ReadResponse is an the return object from an dapr input binding

Directories

Path Synopsis
alicloud
oss
Package apns implements an output binding for Dapr that allows services to send push notifications to Apple devices and Mac computers using Apple's Push Notification Service (APNS).
Package apns implements an output binding for Dapr that allows services to send push notifications to Apple devices and Mac computers using Apple's Push Notification Service (APNS).
aws
s3
sns
sqs
azure
gcp
rethinkdb
twilio
sms

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL