github.com/Jeffail/benthos/v3@v3.65.0/lib/input/nsq.go (about)

     1  package input
     2  
     3  import (
     4  	"github.com/Jeffail/benthos/v3/internal/docs"
     5  	"github.com/Jeffail/benthos/v3/lib/input/reader"
     6  	"github.com/Jeffail/benthos/v3/lib/log"
     7  	"github.com/Jeffail/benthos/v3/lib/message/batch"
     8  	"github.com/Jeffail/benthos/v3/lib/metrics"
     9  	"github.com/Jeffail/benthos/v3/lib/types"
    10  	"github.com/Jeffail/benthos/v3/lib/util/tls"
    11  )
    12  
    13  //------------------------------------------------------------------------------
    14  
    15  func init() {
    16  	Constructors[TypeNSQ] = TypeSpec{
    17  		constructor: fromSimpleConstructor(NewNSQ),
    18  		Summary: `
    19  Subscribe to an NSQ instance topic and channel.`,
    20  		FieldSpecs: docs.FieldSpecs{
    21  			func() docs.FieldSpec {
    22  				b := batch.FieldSpec()
    23  				b.IsDeprecated = true
    24  				return b
    25  			}(),
    26  			docs.FieldCommon("nsqd_tcp_addresses", "A list of nsqd addresses to connect to.").Array(),
    27  			docs.FieldCommon("lookupd_http_addresses", "A list of nsqlookupd addresses to connect to.").Array(),
    28  			tls.FieldSpec(),
    29  			docs.FieldCommon("topic", "The topic to consume from."),
    30  			docs.FieldCommon("channel", "The channel to consume from."),
    31  			docs.FieldCommon("user_agent", "A user agent to assume when connecting."),
    32  			docs.FieldCommon("max_in_flight", "The maximum number of pending messages to consume at any given time."),
    33  		},
    34  		Categories: []Category{
    35  			CategoryServices,
    36  		},
    37  	}
    38  }
    39  
    40  //------------------------------------------------------------------------------
    41  
    42  // NewNSQ creates a new NSQ input type.
    43  func NewNSQ(conf Config, mgr types.Manager, log log.Modular, stats metrics.Type) (Type, error) {
    44  	var n reader.Async
    45  	var err error
    46  	if n, err = reader.NewNSQ(conf.NSQ, log, stats); err != nil {
    47  		return nil, err
    48  	}
    49  	if n, err = reader.NewAsyncBatcher(conf.NSQ.Batching, n, mgr, log, stats); err != nil {
    50  		return nil, err
    51  	}
    52  	n = reader.NewAsyncBundleUnacks(n)
    53  	return NewAsyncReader(TypeNSQ, true, n, log, stats)
    54  }
    55  
    56  //------------------------------------------------------------------------------