adapter

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: 5 Imported by: 3

Documentation

Overview

Package adapter 定义 FlowLink 与外部消息系统、触发器和投递组件对接的通用接口。

具体 Kafka、Pulsar、Redis 等实现应放在扩展包或业务侧,engine 只保留协议边界。

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrClosed 表示适配器或内存队列已经关闭。
	ErrClosed = errors.New("adapter closed")
	// ErrNilEnvelope 表示发布消息时缺少 envelope。
	ErrNilEnvelope = errors.New("adapter envelope is nil")
	// ErrNilHandler 表示启动 trigger 时缺少处理函数。
	ErrNilHandler = errors.New("adapter handler is nil")
)

Functions

This section is empty.

Types

type Consumer

type Consumer interface {
	Receive(ctx context.Context) (Message, error)
	Close() error
}

Consumer 表示可以从外部系统拉取消息的消费端。

type Handler

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

Handler 是 adapter 收到消息后的处理函数。

type MemoryConsumer

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

MemoryConsumer 从 MemoryQueue 拉取消息。

func (*MemoryConsumer) Close

func (c *MemoryConsumer) Close() error

Close 关闭底层内存队列。

func (*MemoryConsumer) Receive

func (c *MemoryConsumer) Receive(ctx context.Context) (Message, error)

Receive 从内存队列读取下一条消息。

type MemoryMessage

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

MemoryMessage 是 MemoryQueue 产生的消息实现。

func (*MemoryMessage) Ack

func (m *MemoryMessage) Ack(_ context.Context) error

Ack 标记内存消息已确认。

func (*MemoryMessage) Acked

func (m *MemoryMessage) Acked() bool

Acked 返回消息是否已经被确认。

func (*MemoryMessage) Envelope

func (m *MemoryMessage) Envelope() *core.Envelope

Envelope 返回消息 envelope 的副本。

func (*MemoryMessage) ID

func (m *MemoryMessage) ID() string

ID 返回消息 ID。

func (*MemoryMessage) Key

func (m *MemoryMessage) Key() string

Key 返回消息排序 key。

func (*MemoryMessage) Nack

func (m *MemoryMessage) Nack(_ context.Context, err error) error

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

func (*MemoryMessage) NackError

func (m *MemoryMessage) NackError() error

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

func (*MemoryMessage) Nacked

func (m *MemoryMessage) Nacked() bool

Nacked 返回消息是否已经被否定确认。

type MemoryOptions

type MemoryOptions struct {
	BufferSize int
}

MemoryOptions 配置内存队列。

type MemoryProducer

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

MemoryProducer 向 MemoryQueue 发布消息。

func (*MemoryProducer) Close

func (p *MemoryProducer) Close() error

Close 关闭底层内存队列。

func (*MemoryProducer) Publish

func (p *MemoryProducer) Publish(ctx context.Context, envelope *core.Envelope) error

Publish 复制 envelope 后写入内存队列。

type MemoryQueue

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

MemoryQueue 是 adapter 接口的内存实现,主要用于测试和本地示例。

func NewMemoryQueue

func NewMemoryQueue(opts MemoryOptions) *MemoryQueue

NewMemoryQueue 创建内存队列,BufferSize 未设置时使用默认缓冲。

func (*MemoryQueue) Close

func (q *MemoryQueue) Close() error

Close 关闭队列并唤醒阻塞的消费者。

func (*MemoryQueue) Consumer

func (q *MemoryQueue) Consumer() *MemoryConsumer

Consumer 返回绑定该队列的消费端。

func (*MemoryQueue) Producer

func (q *MemoryQueue) Producer() *MemoryProducer

Producer 返回绑定该队列的生产端。

func (*MemoryQueue) Trigger

func (q *MemoryQueue) Trigger() *MemoryTrigger

Trigger 返回绑定该队列的触发器。

type MemoryTrigger

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

MemoryTrigger 持续消费 MemoryQueue 并回调 handler。

func (*MemoryTrigger) Start

func (t *MemoryTrigger) Start(ctx context.Context, handler Handler) error

Start 启动后台消费循环。

func (*MemoryTrigger) Stop

func (t *MemoryTrigger) Stop(ctx context.Context) error

Stop 停止后台消费循环。

type Message

type Message interface {
	ID() string
	Key() string
	Envelope() *core.Envelope
	Ack(ctx context.Context) error
	Nack(ctx context.Context, err error) error
}

Message 是外部消息系统交给 FlowLink 的最小消息接口。

type Producer

type Producer interface {
	Publish(ctx context.Context, envelope *core.Envelope) error
	Close() error
}

Producer 表示可以向外部系统发布 envelope 的生产端。

type Trigger

type Trigger interface {
	Start(ctx context.Context, handler Handler) error
	Stop(ctx context.Context) error
}

Trigger 表示可以持续消费消息并调用 handler 的触发器。

Jump to

Keyboard shortcuts

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