Documentation ¶
Overview ¶
Example (Kafka) ¶
var pub = NewKafkaPublisher(context.Background(), KafkaConfig{ Hosts: []string{"kafka.service.net"}, Topic: "topic-test", }) _ = pub.Run() defer pub.Close() var message = Message{ EventName: "domain_system_module_componentA_run_fail", Body: []byte("error: "), } body, _ := json.Marshal(message) _ = pub.Send(body)
Output:
Example (Merge) ¶
var pub = NewKafkaPublisher(context.Background(), KafkaConfig{ Hosts: []string{"kafka.service.net"}, Topic: "topic-test", }) _ = pub.Run() defer pub.Close() var m = merge.NewMerge(context.Background(), time.Millisecond*500) m.Run() defer m.Close() for i := 0; i < 1000000; i++ { var randNumber = rand.Intn(50) var k = fmt.Sprint("domain_system_module_componentA_run_fail", randNumber) if !m.Allowed(merge.Key(k)) { continue } var message = Message{ EventName: k, Body: []byte("error: "), } body, _ := json.Marshal(message) _ = pub.Send(body) }
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetMiddlewareFunc ¶
func GetMiddlewareFunc(config MiddlewareConfig) func(http.ResponseWriter, *http.Request)
func InstallStd ¶
func InstallStd(config MiddlewareConfig, handler http.Handler) func(http.ResponseWriter, *http.Request)
Types ¶
type KafkaConfig ¶
type MiddlewareConfig ¶
type MiddlewareConfig struct { Topic string // CreateMessage defines a format of a message. CreateMessage func(*http.Request) []byte // SendCondition judge sending condition. SendCondition func(*http.Request) bool // Publisher can be assigned to NewKafkaPublisher for default and NewFakeInformer for test, or your customization. // Note that you must call Publish.Run and it must be closed when no longer in use. Publisher Publish // Fail will call when error occurs. Fail func(error) }
MiddlewareConfig includes essential info must be used.
type Publish ¶
type Publish interface { // Send sends data to Broker. // Note that data is recommended to design into a struct include a string key and a bytes type data. // // Suggestion: Use merge.Merge to merge same events in a tiny interval. Send(data []byte) error Run() error Close() error }
func NewFakePublisher ¶
func NewFakePublisher() Publish
func NewKafkaPublisher ¶
func NewKafkaPublisher(ctx context.Context, config KafkaConfig) Publish
Click to show internal directories.
Click to hide internal directories.