31 lines
1.3 KiB
Go
31 lines
1.3 KiB
Go
// Copyright (c) Mainflux
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package consumers
|
|
|
|
import "context"
|
|
|
|
// AsyncConsumer specifies a non-blocking message-consuming API,
|
|
// which can be used for writing data to the DB, publishing messages
|
|
// to broker, sending notifications, or any other asynchronous job.
|
|
type AsyncConsumer interface {
|
|
// ConsumeAsync method is used to asynchronously consume received messages.
|
|
ConsumeAsync(ctx context.Context, messages interface{})
|
|
|
|
// Errors method returns a channel for reading errors which occur during async writes.
|
|
// Must be called before performing any writes for errors to be collected.
|
|
// The channel is buffered(1) so it allows only 1 error without blocking if not drained.
|
|
// The channel may receive nil error to indicate success.
|
|
Errors() <-chan error
|
|
}
|
|
|
|
// BlockingConsumer specifies a blocking message-consuming API,
|
|
// which can be used for writing data to the DB, publishing messages
|
|
// to broker, sending notifications... BlockingConsumer implementations
|
|
// might also support concurrent use, but consult implementation for more details.
|
|
type BlockingConsumer interface {
|
|
// ConsumeBlocking method is used to consume received messages synchronously.
|
|
// A non-nil error is returned to indicate operation failure.
|
|
ConsumeBlocking(ctx context.Context, messages interface{}) error
|
|
}
|