File: nrstan_doc.go

package info (click to toggle)
golang-github-newrelic-go-agent 3.15.2-9
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 8,356 kB
  • sloc: sh: 65; makefile: 6
file content (48 lines) | stat: -rw-r--r-- 1,982 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright 2020 New Relic Corporation. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

// Package nrstan instruments https://github.com/nats-io/stan.go.
//
// This package can be used to simplify instrumenting NATS Streaming subscribers. Currently due to the nature of
// the NATS Streaming framework we are limited to two integration points: `StartPublishSegment` for publishers, and
// `SubWrapper` for subscribers.
//
//
// NATS Streaming subscribers
//
// `nrstan.StreamingSubWrapper` can be used to wrap the function for STREAMING stan.Subscribe and stan.QueueSubscribe
// (https://godoc.org/github.com/nats-io/stan.go#Conn) If the `newrelic.Application` parameter is non-nil, it will
// create a `newrelic.Transaction` and end the transaction when the passed function is complete. Example:
//
//	sc, err := stan.Connect(clusterName, clientName)
//	if err != nil {
// 		t.Fatal("Couldn't connect to server", err)
//	}
//	defer sc.Close()
//	app := createTestApp(t)  // newrelic.Application
//	sc.Subscribe(subject, StreamingSubWrapper(app, myMessageHandler)
//
//
// NATS Streaming publishers
//
// You can use `nrnats.StartPublishSegment` from the `nrnats` package
// (https://godoc.org/github.com/newrelic/go-agent/_integrations/nrnats/#StartPublishSegment)
// to start an external segment when doing a streaming publish, which must be ended after publishing is complete.
// Example:
//
//	sc, err := stan.Connect(clusterName, clientName)
//	if err != nil {
//		t.Fatal("Couldn't connect to server", err)
//	}
//	txn := currentTransaction()  // current newrelic.Transaction
//	seg := nrnats.StartPublishSegment(txn, sc.NatsConn(), subj)
//	sc.Publish(subj, []byte("Hello World"))
//	seg.End()
//
// Full Publisher/Subscriber example:
// https://github.com/newrelic/go-agent/blob/master/_integrations/nrstan/examples/main.go
package nrstan

import "github.com/newrelic/go-agent/internal"

func init() { internal.TrackUsage("integration", "framework", "stan") }