mq

package
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: Mar 31, 2026 License: Apache-2.0 Imports: 32 Imported by: 1

Documentation

Index

Constants

View Source
const CHECKIN_FLUSH_INTERVAL = 30
View Source
const KEEPALIVE_TIMEOUT = 60 //timeout in seconds

KEEPALIVE_TIMEOUT - time in seconds for timeout

View Source
const MQ_DISCONNECT = 250

MQ_DISCONNECT - disconnects MQ

View Source
const MQ_TIMEOUT = 30

MQ_TIMEOUT - timeout for MQ

Variables

View Source
var UpdateMetrics = func(client mqtt.Client, msg mqtt.Message) {
}

UpdateMetrics message Handler -- handles updates from client nodes for metrics

View Source
var UpdateMetricsFallBack = func(nodeid string, newMetrics models.Metrics) {}

Functions

func BatchItems added in v0.25.0

func BatchItems[T any](items []T, batchSize int) [][]T

func ClientPeerUpdate

func ClientPeerUpdate(client mqtt.Client, msg mqtt.Message)

ClientPeerUpdate message handler -- handles updating peers after signal from client nodes

func CloseClient

func CloseClient()

CloseClient - function to close the mq connection from server

func DecryptMsg

func DecryptMsg(node *models.Node, msg []byte) ([]byte, error)

func DefaultHandler

func DefaultHandler(client mqtt.Client, msg mqtt.Message)

DefaultHandler default message queue handler -- NOT USED

func DeleteAndCleanupHost added in v1.2.0

func DeleteAndCleanupHost(h *schema.Host)

func GetID

func GetID(topic string) (string, error)

decodes a message queue topic and returns the embedded node.ID

func HandleHostCheckin added in v0.22.0

func HandleHostCheckin(h, currentHost *schema.Host) bool

func HostUpdate

func HostUpdate(hostUpdate *models.HostUpdate) error

HostUpdate -- publishes a host update to clients

func InitServerSync added in v1.5.1

func InitServerSync()

InitServerSync wires up the logic.PublishServerSync hook so that mutations in the logic package can broadcast sync signals without importing mq (avoiding circular imports).

func IsConnected

func IsConnected() bool

IsConnected - function for determining if the mqclient is connected or not

func IsConnectionOpen added in v0.24.3

func IsConnectionOpen() bool

IsConnectionOpen - function for determining if the mqclient is connected or not

func Keepalive

func Keepalive(ctx context.Context)

Keepalive -- periodically pings all nodes to let them know server is still alive and doing well

func KickOutClients added in v0.24.0

func KickOutClients() error

func NodeUpdate

func NodeUpdate(node *models.Node) error

NodeUpdate -- publishes a node update

func PublishDeletedClientPeerUpdate

func PublishDeletedClientPeerUpdate(delClient *models.ExtClient) error

PublishDeletedClientPeerUpdate --- determines and publishes a peer update to all the hosts with a deleted ext client to account for

func PublishDeletedNodePeerUpdate

func PublishDeletedNodePeerUpdate(delNode *models.Node) error

PublishDeletedNodePeerUpdate --- determines and publishes a peer update to all the hosts with a deleted node to account for

func PublishExporterFeatureFlags added in v1.4.0

func PublishExporterFeatureFlags() error

func PublishMqUpdatesForDeletedNode added in v0.21.2

func PublishMqUpdatesForDeletedNode(node models.Node, sendNodeUpdate bool)

PublishMqUpdatesForDeletedNode - published all the required updates for deleted node

func PublishPeerUpdate

func PublishPeerUpdate(replacePeers bool) error

PublishPeerUpdate --- queues a peer update that will be coalesced with other rapid-fire updates via a debounce window (500ms) capped by a max-wait (3s).

func PublishSingleHostPeerUpdate

func PublishSingleHostPeerUpdate(host *schema.Host, allNodes []models.Node, deletedNode *models.Node, deletedClients []models.ExtClient, replacePeers bool, wg *sync.WaitGroup) error

PublishSingleHostPeerUpdate --- determines and publishes a peer update to one host

func PushAllMetricsToExporter added in v1.5.1

func PushAllMetricsToExporter()

PushAllMetricsToExporter fetches all node metrics from the database and POSTs them as a batch to the exporter's HTTP API. Called periodically by a ticker instead of on every individual metrics MQTT message.

func PushSyncDNS added in v0.26.0

func PushSyncDNS(dnsEntries []models.DNSEntry) error

func SendDNSSyncByNetwork added in v0.26.0

func SendDNSSyncByNetwork(network string) error

func SendPullSYN added in v0.24.0

func SendPullSYN() error

func ServerStartNotify

func ServerStartNotify() error

ServerStartNotify - notifies all non server nodes to pull changes after a restart

func SetupMQTT

func SetupMQTT(fatal bool)

SetupMQTT creates a connection to broker and return client

func SignalPeer added in v1.2.0

func SignalPeer(signal models.Signal)

func StartPeerUpdateWorker added in v1.5.1

func StartPeerUpdateWorker(ctx context.Context)

StartPeerUpdateWorker --- runs a background goroutine that coalesces peer update signals using a resettable debounce timer capped by an absolute max-wait deadline. This ensures rapid-fire PublishPeerUpdate calls result in a single broadcast, while guaranteeing peers never wait longer than peerUpdateMaxWait from the first signal.

func UpdateHost

func UpdateHost(client mqtt.Client, msg mqtt.Message)

UpdateHost message Handler -- handles host updates from clients

func UpdateNode

func UpdateNode(client mqtt.Client, msg mqtt.Message)

UpdateNode message Handler -- handles updates from client nodes

Types

type Emqx added in v0.23.0

type Emqx interface {
	GetType() servercfg.Emqxdeploy
	CreateEmqxUser(username, password string) error
	CreateEmqxUserforServer() error
	CreateEmqxDefaultAuthenticator() error
	CreateEmqxDefaultAuthorizer() error
	CreateDefaultAllowRule() error
	DeleteEmqxUser(username string) error
}

func GetEmqxHandler added in v0.23.0

func GetEmqxHandler() Emqx

GetEmqxHandler - gets emqx handler

type EmqxCloud added in v0.23.0

type EmqxCloud struct {
	URL       string
	AppID     string
	AppSecret string
}

func (*EmqxCloud) CreateDefaultAllowRule added in v0.24.3

func (e *EmqxCloud) CreateDefaultAllowRule() error

func (*EmqxCloud) CreateEmqxDefaultAuthenticator added in v0.23.0

func (e *EmqxCloud) CreateEmqxDefaultAuthenticator() error

func (*EmqxCloud) CreateEmqxDefaultAuthorizer added in v0.23.0

func (e *EmqxCloud) CreateEmqxDefaultAuthorizer() error

func (*EmqxCloud) CreateEmqxUser added in v0.23.0

func (e *EmqxCloud) CreateEmqxUser(username, pass string) error

func (*EmqxCloud) CreateEmqxUserforServer added in v0.23.0

func (e *EmqxCloud) CreateEmqxUserforServer() error

func (*EmqxCloud) DeleteEmqxUser added in v0.23.0

func (e *EmqxCloud) DeleteEmqxUser(username string) error

func (*EmqxCloud) GetType added in v0.23.0

func (e *EmqxCloud) GetType() servercfg.Emqxdeploy

type EmqxOnPrem added in v0.23.0

type EmqxOnPrem struct {
	URL      string
	UserName string
	Password string
}

func (*EmqxOnPrem) CreateDefaultAllowRule added in v0.24.3

func (e *EmqxOnPrem) CreateDefaultAllowRule() error

CreateDefaultAllowRule - creates a rule to deny access to all topics for all users by default to allow user access to topics use the `mq.CreateUserAccessRule` function

func (*EmqxOnPrem) CreateEmqxDefaultAuthenticator added in v0.23.0

func (e *EmqxOnPrem) CreateEmqxDefaultAuthenticator() error

CreateEmqxDefaultAuthenticator - creates a default authenticator based on password and using EMQX's built in database as storage

func (*EmqxOnPrem) CreateEmqxDefaultAuthorizer added in v0.23.0

func (e *EmqxOnPrem) CreateEmqxDefaultAuthorizer() error

CreateEmqxDefaultAuthorizer - creates a default ACL authorization mechanism based on the built in database

func (*EmqxOnPrem) CreateEmqxUser added in v0.23.0

func (e *EmqxOnPrem) CreateEmqxUser(username, password string) error

CreateEmqxUser - creates an EMQX user

func (*EmqxOnPrem) CreateEmqxUserforServer added in v0.23.0

func (e *EmqxOnPrem) CreateEmqxUserforServer() error

func (*EmqxOnPrem) DeleteEmqxUser added in v0.23.0

func (e *EmqxOnPrem) DeleteEmqxUser(username string) error

DeleteEmqxUser - deletes an EMQX user

func (*EmqxOnPrem) GetType added in v0.23.0

func (e *EmqxOnPrem) GetType() servercfg.Emqxdeploy

Jump to

Keyboard shortcuts

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