Add scanInterval option (#105)
By default a consumer will scan for records every 250ms. This interval can be configured with WithScanInterval.
This commit is contained in:
parent
217999854b
commit
bc5c012fd3
2 changed files with 12 additions and 1 deletions
|
|
@ -35,6 +35,7 @@ func New(streamName string, opts ...Option) (*Consumer, error) {
|
|||
logger: &noopLogger{
|
||||
logger: log.New(ioutil.Discard, "", log.LstdFlags),
|
||||
},
|
||||
scanInterval: 250 * time.Millisecond,
|
||||
}
|
||||
|
||||
// override defaults
|
||||
|
|
@ -69,6 +70,7 @@ type Consumer struct {
|
|||
group Group
|
||||
logger Logger
|
||||
store Store
|
||||
scanInterval time.Duration
|
||||
}
|
||||
|
||||
// ScanFunc is the type of the function called for each message read
|
||||
|
|
@ -146,12 +148,14 @@ func (c *Consumer) ScanShard(ctx context.Context, shardID string, fn ScanFunc) e
|
|||
defer func() {
|
||||
c.logger.Log("[CONSUMER] stop scan:", shardID)
|
||||
}()
|
||||
scanTicker := time.NewTicker(c.scanInterval)
|
||||
defer scanTicker.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return nil
|
||||
default:
|
||||
case <-scanTicker.C:
|
||||
resp, err := c.client.GetRecords(&kinesis.GetRecordsInput{
|
||||
ShardIterator: shardIterator,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -57,3 +57,10 @@ func WithTimestamp(t time.Time) Option {
|
|||
c.initialTimestamp = &t
|
||||
}
|
||||
}
|
||||
|
||||
// WithScanInterval overrides the scan interval for the consumer
|
||||
func WithScanInterval(d time.Duration) Option {
|
||||
return func(c *Consumer) {
|
||||
c.scanInterval = d
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue