Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions messaging/config.go
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
package messaging

import "time"

// Config holds library-wide options for producers and consumers.
type Config struct {
RetryCount int
RetryDelay time.Duration
Timeout time.Duration
}

// DefaultConfig returns a reasonable default configuration
func DefaultConfig() Config {
return Config{
RetryCount: 3,
RetryDelay: 500 * time.Millisecond,
Timeout: 5 * time.Second,
}
}
8 changes: 8 additions & 0 deletions messaging/consumer.go
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
package messaging

import "context"

// Consumer defines the interface for consuming messages.
type Consumer interface {
Subscribe(ctx context.Context, topic string, handler HandlerFunc) error
Close() error
}
7 changes: 7 additions & 0 deletions messaging/error.go
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
package messaging

import "errors"

var (
ErrPublishFailed = errors.New("failed to publish message")
ErrSubscriptionErr = errors.New("failed to subscribe to topic")
)
5 changes: 5 additions & 0 deletions messaging/handler.go
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
package messaging

import "context"

// HandlerFunc defines the function signature for consuming messages.
type HandlerFunc func(ctx context.Context, msg Message) error
8 changes: 8 additions & 0 deletions messaging/message.go
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
package messaging

// Message represents a single message in the system.
type Message struct {
ID string
Payload []byte
Headers map[string]string
Timestamp int64
}
8 changes: 8 additions & 0 deletions messaging/producer.go
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
package messaging

import "context"

// Producer defines the interface for publishing messages.
type Producer interface {
Publish(ctx context.Context, topic string, msg Message) error
Close() error
}