snapshot of https://github.com/ThreeDotsLabs/watermill.git (master, 2026-09-15; blobs > 131072B omitted)
Some checks failed
master / ci (push) Failing after 0s

This commit is contained in:
upstream-mirror
2026-09-15 21:27:46 +05:00
commit ce933d1277
538 changed files with 46504 additions and 0 deletions

70
tools/mill/cmd/consume.go Normal file
View File

@@ -0,0 +1,70 @@
package cmd
import (
"context"
"os"
"time"
"github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"github.com/ThreeDotsLabs/watermill-io/pkg/io"
"github.com/ThreeDotsLabs/watermill/message"
"github.com/ThreeDotsLabs/watermill/message/router/plugin"
)
// consumer is initialized by the parent command to the pub/sub provider of choice.
var consumer message.Subscriber
func addConsumeCmd(parent *cobra.Command, topicKey string) *cobra.Command {
cmd := &cobra.Command{
Use: "consume",
Short: "Consume messages from a pub/sub and print them to stdout",
Long: `Consume messages from the pub/sub of your choice and print them on the standard output.
For the configuration of particular pub/sub providers, see the help for the provider commands.`,
RunE: func(cmd *cobra.Command, args []string) error {
topic := viper.GetString(topicKey)
router, err := message.NewRouter(
message.RouterConfig{
CloseTimeout: 5 * time.Second,
},
logger,
)
if err != nil {
return errors.Wrap(err, "could not create router")
}
router.AddPlugin(plugin.SignalsHandler)
out, err := io.NewPublisher(
os.Stdout,
io.PublisherConfig{
MarshalFunc: io.PayloadMarshalFunc,
},
logger,
)
if err != nil {
return errors.Wrap(err, "could not create console producer")
}
router.AddHandler(
"dump_to_stdout",
topic,
consumer,
"",
out,
func(msg *message.Message) ([]*message.Message, error) {
// just forward the message to stdout
return message.Messages{msg}, nil
},
)
return router.Run(context.Background())
},
}
parent.AddCommand(cmd)
return cmd
}