mailbox

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package mailbox 提供按 key 保序的内存调度能力。

它用于在同一个 key 内串行处理任务,同时让不同 key 尽量并发执行;它不负责消息持久化。

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrMessageRequired 表示调度时没有传入消息。
	ErrMessageRequired = errors.New("mailbox message is required")
	// ErrHandlerRequired 表示 dispatcher 没有可用 handler。
	ErrHandlerRequired = errors.New("mailbox handler is required")
	// ErrDispatcherClosed 表示 dispatcher 已停止接收消息。
	ErrDispatcherClosed = errors.New("mailbox dispatcher is closed")
)

Functions

This section is empty.

Types

type Dispatcher

type Dispatcher struct {
	// contains filtered or unexported fields
}

Dispatcher 将相同 key 的消息放入同一个 mailbox 顺序处理。

func NewDispatcher

func NewDispatcher(handler Handler, queueSize int) *Dispatcher

NewDispatcher 创建按 key 保序的内存 dispatcher。

func (*Dispatcher) Close

func (d *Dispatcher) Close() error

Close 停止所有 mailbox worker,并拒绝后续消息。

func (*Dispatcher) Dispatch

func (d *Dispatcher) Dispatch(ctx context.Context, msg Message) error

Dispatch 将消息投入对应 key 的 mailbox。

type Handler

type Handler func(ctx context.Context, msg Message) error

Handler 是 mailbox 按 key 串行调用的处理函数。

type MemoryMessage

type MemoryMessage struct {
	// contains filtered or unexported fields
}

MemoryMessage 是 mailbox 测试和示例用的内存消息实现。

func NewMemoryMessage

func NewMemoryMessage(key string) *MemoryMessage

NewMemoryMessage 创建指定 key 的内存消息。

func (*MemoryMessage) Ack

func (m *MemoryMessage) Ack()

Ack 标记消息处理成功。

func (*MemoryMessage) Acked

func (m *MemoryMessage) Acked() bool

Acked 返回消息是否已成功确认。

func (*MemoryMessage) Error

func (m *MemoryMessage) Error() error

Error 返回最近一次 Nack 保存的错误。

func (*MemoryMessage) Key

func (m *MemoryMessage) Key() string

Key 返回 mailbox 分组 key。

func (*MemoryMessage) Nack

func (m *MemoryMessage) Nack(err error)

Nack 标记消息处理失败并保存错误。

type Message

type Message interface {
	Key() string
	Ack()
	Nack(error)
}

Message 是 mailbox 调度的最小消息接口。

Jump to

Keyboard shortcuts

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