func (out *redisOutput) BulkPublish( signal outputs.Signaler, ts time.Time, events []common.MapStr, ) error { if !out.connected { logp.Debug("output_redis", "Droping pkt ...") return errors.New("Not connected") } command := "RPUSH" if out.DataType == RedisChannelType { command = "PUBLISH" } if len(events) == 1 { // single event event := events[0] jsonEvent, err := json.Marshal(event) if err != nil { logp.Err("Fail to convert the event to JSON: %s", err) outputs.SignalCompleted(signal) return err } _, err = out.Conn.Do(command, out.Index, string(jsonEvent)) outputs.Signal(signal, err) out.onFail(err) return err } for _, event := range events { jsonEvent, err := json.Marshal(event) if err != nil { logp.Err("Fail to convert the event to JSON: %s", err) continue } err = out.Conn.Send(command, out.Index, string(jsonEvent)) if err != nil { outputs.SignalFailed(signal, err) out.onFail(err) return err } } if err := out.Conn.Flush(); err != nil { outputs.Signal(signal, err) out.onFail(err) return err } _, err := out.Conn.Receive() outputs.Signal(signal, err) out.onFail(err) return err }
func (out *fileOutput) PublishEvent( trans outputs.Signaler, opts outputs.Options, event common.MapStr, ) error { jsonEvent, err := json.Marshal(event) if err != nil { // mark as success so event is not sent again. outputs.SignalCompleted(trans) logp.Err("Fail to convert the event to JSON: %s", err) return err } err = out.rotator.WriteLine(jsonEvent) if err != nil { if opts.Guaranteed { logp.Critical("Unable to write events to file: %s", err) } else { logp.Err("Error when writing line to file: %s", err) } } outputs.Signal(trans, err) return err }
func (out *redisOutput) BulkPublish( signal outputs.Signaler, opts outputs.Options, events []common.MapStr, ) error { if !opts.Guaranteed { err := out.doBulkPublish(events) outputs.Signal(signal, err) return err } for { err := out.doBulkPublish(events) if err == nil { outputs.SignalCompleted(signal) return nil } // TODO: add backoff time.Sleep(1) } }
func (out *fileOutput) PublishEvent( trans outputs.Signaler, ts time.Time, event common.MapStr, ) error { jsonEvent, err := json.Marshal(event) if err != nil { // mark as success so event is not sent again. outputs.SignalCompleted(trans) logp.Err("Fail to convert the event to JSON: %s", err) return err } err = out.rotator.WriteLine(jsonEvent) if err != nil { logp.Err("Error when writing line to file: %s", err) } outputs.Signal(trans, err) return err }