common

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package common - common utility structs and functions

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildIPCMessageBufferQueueName

func BuildIPCMessageBufferQueueName(queueName string, reader string) string

BuildIPCMessageBufferQueueName helper function to build IPC reader buffer queue name

func BuildIPCMessageQueueName

func BuildIPCMessageQueueName(queueName string) string

BuildIPCMessageQueueName helper function to build IPC queue name

Types

type IPCMessageReceive

type IPCMessageReceive interface {
	/*
		DequeueMessage dequeue message from main queue.

		The message will staged on the buffer queue.

			@param ctx context.Context - execution context
			@param blocking bool - whether this is a blocking operation
			@param maxWait *time.Duration - if blocking, the max duration. Default 5 sec.
			@return message from main queue, or nil if queue empty
	*/
	DequeueMessage(
		ctx context.Context, blocking bool, maxWait *time.Duration,
	) (goutilsRedis.QueueMessageEnvelope, error)

	/*
		DequeueBufferedMessage dequeue message from buffer queue.

			@param ctx context.Context - execution context
			@param blocking bool - whether this is a blocking operation
			@param maxWait *time.Duration - if blocking, the max duration. Default 5 sec.
			@return message from buffer queue, or nil if queue empty
	*/
	DequeueBufferedMessage(
		ctx context.Context, blocking bool, maxWait *time.Duration,
	) (goutilsRedis.QueueMessageEnvelope, error)

	/*
		DeleteBufferedMessage delete from buffer queue.

			@param ctx context.Context - execution context
			@param msg goutilsRedis.QueueMessageEnvelope - the message to delete
	*/
	DeleteBufferedMessage(ctx context.Context, msg goutilsRedis.QueueMessageEnvelope) error

	/*
		ReEnqueueOnMainQueue re-enqueue message on main queue.

		The message will be deleted from the buffer queue.

			@param ctx context.Context - execution context
			@param msg goutilsRedis.QueueMessageEnvelope - the message to enqueue
	*/
	ReEnqueueOnMainQueue(
		ctx context.Context, msg goutilsRedis.QueueMessageEnvelope,
	) error
}

IPCMessageReceive client for receiving message on a queue

func NewRedisIPCMessageReceive

func NewRedisIPCMessageReceive(
	ctx context.Context, queueName string, redis goutilsRedis.Client, reader string,
) (IPCMessageReceive, error)

NewRedisIPCMessageReceive define a new IPC message receiver for a REDIS queue

The intended usage case of the receive is:

- Move a message from the main queue to the reader buffer queue

- Subscriber verify they can take ownership of message

  • If yes, process the message, then delete from the reader buffer queue.
  • If no, move the message back to the main queue.

Each reader must have exclusive ownership of it's own buffer queue.

On initialization, reader process any existing messages in the buffer queue. For each existing message in the buffer queue:

- Subscriber verify its ownership of message

  • If yes, process the message.
  • If no, move the message back to the main queue.

At application start

@param ctx context.Context - execution context
@param queueName string - read message from queue
@param redis goutilsRedis.Client - REDIS client
@param reader string - queue reader name
@returns new receiver

type IPCMessageSend

type IPCMessageSend interface {
	/*
		EnqueueMessage enqueue message on queue

			@param ctx context.Context - execution context
			@param msg goutilsRedis.QueueMessageEnvelope - the message to enqueue
	*/
	EnqueueMessage(
		ctx context.Context, msg goutilsRedis.QueueMessageEnvelope,
	) error
}

IPCMessageSend client for sending message on a queue

func NewRedisIPCMessageSend

func NewRedisIPCMessageSend(
	ctx context.Context, queueName string, redis goutilsRedis.Client, sender string,
) (IPCMessageSend, error)

NewRedisIPCMessageSend define a new IPC message sender for a REDIS queue

@param ctx context.Context - execution context
@param queueName string - write messages to queue
@param redis goutilsRedis.Client - REDIS client
@param sender string - queue sender name
@returns new sender

Jump to

Keyboard shortcuts

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