KubeMQ
Client SDKsGoReference

Events

Fire-and-forget pub/sub — KubeMQ Go SDK reference.

Real-time events are delivered at most once. Use SendEvent for publishers and SubscribeToEvents for consumers; consumer groups load-balance deliveries across subscribers.

SendEvent

func (c *Client) SendEvent(ctx context.Context, event *Event) error

Publishes a fire-and-forget event. Errors reflect transport or validation only (not subscriber presence).

Parameters:

NameTypeRequiredDescription
ctxcontext.ContextYesDeadline for the send RPC
event*EventYesMessage with channel, body/metadata, optional tags

Returns: error — nil on successful broker accept.

Throws: *KubeMQError — validation, timeout, auth, or transient failures.

Note: Delivery to subscribers is asynchronous; a nil return means the broker accepted the message.

SubscribeToEvents

func (c *Client) SubscribeToEvents(ctx context.Context, channel, group string, opts ...SubscribeOption) (*Subscription, error)

Subscribes to live events on channel. Use a non-empty group for competing consumers; use "" to broadcast within the process only.

Parameters:

NameTypeRequiredDescription
ctxcontext.ContextYesSubscription lifetime
channelstringYesEvents channel name
groupstringNoConsumer group for load balancing
opts...SubscribeOptionNoThrottling, buffer size, callbacks

Returns: *Subscription — call Unsubscribe to stop.

EventMessage shape

Build events with NewEvent() and setters (SetChannel, SetBody, SetMetadata, SetTags), or populate an Event struct directly.

Field / setterDescription
ChannelTarget channel (required)
BodyBinary payload
MetadataUTF-8 metadata string
TagsString map for routing or filtering

Quick Usage

events.go
event := kubemq.NewEvent()
event.SetChannel("events.a")
event.SetBody([]byte("hello"))

if err := client.SendEvent(ctx, event); err != nil {
    return err
}

See Also

Was this page helpful?

On this page