Documentation
¶
Overview ¶
Package messaging contains types used across messaging packages.
Example (UsingCloudEvent) ¶
package main
import (
"encoding/json"
"fmt"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/messaging"
)
func main() {
type sampleType struct {
CustomField string `json:"custom_field"`
}
eventToSend, err := messaging.NewCloudEvent("source", "eventtype", &sampleType{
CustomField: "hello, a custom field value",
}, nil)
if err != nil {
panic(err)
}
receivedEvent, err := sendAndReceiveCloudEvent(eventToSend)
if err != nil {
panic(err)
}
var receivedData *sampleType
if err := json.Unmarshal(receivedEvent.Data.([]byte), &receivedData); err != nil {
panic(err)
}
fmt.Printf("Custom field = %s\n", receivedData.CustomField)
}
func sendAndReceiveCloudEvent(ce messaging.CloudEvent) (messaging.CloudEvent, error) {
bytes, err := json.Marshal(ce)
if err != nil {
return messaging.CloudEvent{}, err
}
var received *messaging.CloudEvent
if err := json.Unmarshal(bytes, &received); err != nil {
return messaging.CloudEvent{}, err
}
return *received, nil
}
Output: Custom field = hello, a custom field value
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CloudEvent ¶
type CloudEvent struct {
// ID identifies the event. Producers MUST ensure that source + id is unique for each distinct event. If a duplicate
// event is re-sent (e.g. due to a network error) it MAY have the same id. Consumers MAY assume that Events with
// identical source and id are duplicates.
ID string
// Source identifies the context in which an event happened.
Source string
// SpecVersion is the version of the CloudEvents specification which the event uses.
SpecVersion string
// Type contains a value describing the type of event related to the originating occurrence.
Type string
// Data is the payload for the event.
// * []byte will be serialized and deserialized as []byte.
// * Any other type will be serialized to a JSON object and deserialized into
// a []byte, containing the JSON text.
//
// To deserialize into your chosen type:
//
// var yourData *YourType
// json.Unmarshal(cloudEvent.Data.([]byte), &yourData)
//
Data any
// DataContentType is the content type of [Data] value (ex: "text/xml")
DataContentType *string
// DataSchema identifies the schema that Data adheres to.
DataSchema *string
// Extensions are attributes that are serialized as siblings to attributes like Data.
Extensions map[string]any
// Subject of the event, in the context of the event producer (identified by Source).
Subject *string
// Time represents the time this event occurred.
Time *time.Time
}
CloudEvent represents an event conforming to the CloudEvents 1.0 spec. See here for more details: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md
func NewCloudEvent ¶
func NewCloudEvent(source string, eventType string, data any, options *CloudEventOptions) (CloudEvent, error)
NewCloudEvent creates a CloudEvent.
- source - Identifies the context in which an event happened. The combination of id and source must be unique for each distinct event.
- eventType - Type of event related to the originating occurrence.
- data - data to be added to the event. Can be a []byte, or any JSON serializable type, or nil.
- options - additional fields that are not required.
func (CloudEvent) MarshalJSON ¶
func (ce CloudEvent) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaler interface for CloudEvent.
func (*CloudEvent) UnmarshalJSON ¶
func (ce *CloudEvent) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaler interface for CloudEvent.
type CloudEventOptions ¶
type CloudEventOptions struct {
// DataContentType is the content type of [Data] value (ex: "text/xml")
DataContentType *string
// DataSchema identifies the schema that Data adheres to.
DataSchema *string
// Extensions are attributes that are serialized as siblings to attributes like Data.
Extensions map[string]any
// Subject of the event, in the context of the event producer (identified by Source).
Subject *string
// Time represents the time this event occurred.
// Defaults to time.Now().UTC()
Time *time.Time
}
CloudEventOptions are options for the NewCloudEvent function.
Click to show internal directories.
Click to hide internal directories.