|
@@ -9,6 +9,7 @@ import (
|
|
|
"sparrow/pkg/ruleEngine"
|
|
|
"sparrow/pkg/server"
|
|
|
"sparrow/pkg/utils"
|
|
|
+ "sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -28,6 +29,7 @@ type RestApiRequestNode struct {
|
|
|
pool *grpool.Pool
|
|
|
config *RestApiRequestNodeConfig
|
|
|
client *utils.HttpClient
|
|
|
+ bufPool sync.Pool
|
|
|
}
|
|
|
|
|
|
func (r *RestApiRequestNode) Init(ctx ruleEngine.Context, config string) error {
|
|
@@ -53,6 +55,11 @@ func (r *RestApiRequestNode) Init(ctx ruleEngine.Context, config string) error {
|
|
|
r.config.Retry, time.Duration(r.config.RetryWait)*time.Second)
|
|
|
client.SetLogger(server.Log)
|
|
|
r.client = client
|
|
|
+ r.bufPool = sync.Pool{
|
|
|
+ New: func() interface{}{
|
|
|
+ return new(bytes.Buffer)
|
|
|
+ },
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|
|
|
|
|
@@ -65,10 +72,12 @@ func (r *RestApiRequestNode) OnMessage(ctx ruleEngine.Context, message *protocol
|
|
|
for k, v := range r.config.Headers {
|
|
|
headers[k] = v
|
|
|
}
|
|
|
- w := new(bytes.Buffer)
|
|
|
+ w := r.bufPool.Get().(*bytes.Buffer)
|
|
|
if err := json.NewEncoder(w).Encode(body); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
+ w.Reset()
|
|
|
+ r.bufPool.Put(w)
|
|
|
req, err := utils.NewRequest(r.config.Method, r.config.Url, []byte(body))
|
|
|
if err != nil {
|
|
|
server.Log.Error(err)
|