Major changes: ```go type ScanFunc func(r *Record) error ``` * Simplify the callback func signature by removing `ScanStatus` * Leverage context for cancellation * Add custom error `SkipCheckpoint` for special cases when we don't want to checkpoint Minor changes: * Use kinesis package constants for shard iterator types * Move optional config to new file See conversation on #75 for more details
41 lines
959 B
Go
41 lines
959 B
Go
package consumer
|
|
|
|
import "github.com/aws/aws-sdk-go/service/kinesis/kinesisiface"
|
|
|
|
// Option is used to override defaults when creating a new Consumer
|
|
type Option func(*Consumer)
|
|
|
|
// WithCheckpoint overrides the default checkpoint
|
|
func WithCheckpoint(checkpoint Checkpoint) Option {
|
|
return func(c *Consumer) {
|
|
c.checkpoint = checkpoint
|
|
}
|
|
}
|
|
|
|
// WithLogger overrides the default logger
|
|
func WithLogger(logger Logger) Option {
|
|
return func(c *Consumer) {
|
|
c.logger = logger
|
|
}
|
|
}
|
|
|
|
// WithCounter overrides the default counter
|
|
func WithCounter(counter Counter) Option {
|
|
return func(c *Consumer) {
|
|
c.counter = counter
|
|
}
|
|
}
|
|
|
|
// WithClient overrides the default client
|
|
func WithClient(client kinesisiface.KinesisAPI) Option {
|
|
return func(c *Consumer) {
|
|
c.client = client
|
|
}
|
|
}
|
|
|
|
// ShardIteratorType overrides the starting point for the consumer
|
|
func WithShardIteratorType(t string) Option {
|
|
return func(c *Consumer) {
|
|
c.initialShardIteratorType = t
|
|
}
|
|
}
|