mirror of
https://github.com/mainflux/mainflux.git
synced 2025-04-24 13:48:49 +08:00

* trace consume operations Signed-off-by: SammyOina <sammyoina@gmail.com> * add create span function Signed-off-by: SammyOina <sammyoina@gmail.com> * add consume message op Signed-off-by: SammyOina <sammyoina@gmail.com> * Update consumers/tracing/consumers.go Co-authored-by: b1ackd0t <blackd0t@protonmail.com> Signed-off-by: SammyOina <sammyoina@gmail.com> * trace messages grouped Signed-off-by: SammyOina <sammyoina@gmail.com> * rework comments Signed-off-by: SammyOina <sammyoina@gmail.com> * rename value Signed-off-by: SammyOina <sammyoina@gmail.com> * check message len Signed-off-by: SammyOina <sammyoina@gmail.com> * rename struct member Signed-off-by: SammyOina <sammyoina@gmail.com> * move to open telemetry Signed-off-by: SammyOina <sammyoina@gmail.com> * fix linting Signed-off-by: SammyOina <sammyoina@gmail.com> * improve context management Signed-off-by: SammyOina <sammyoina@gmail.com> * add span details Signed-off-by: SammyOina <sammyoina@gmail.com> * rename operations Signed-off-by: SammyOina <sammyoina@gmail.com> * add comment Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com> Co-authored-by: b1ackd0t <blackd0t@protonmail.com>
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
|
|
}
|