Add batched delivery wire formats to streaming destinations

What does this MR do and why?

Add a batch delivery path alongside the existing per-event stream:

  • BaseStreamDestination.for_batch(destination) builds a batch-mode streamer, and #stream_batch(event_bodies) is the batch entry point.
  • HTTP: POST a JSON array of event bodies; drop the per-request X-Gitlab-Audit-Event-Type header (each element self-describes type).
  • GCP: map the batch to a multi-entry Cloud Logging write.
  • S3: write one object per batch, keyed YYYY/MM/DD/<time_in_ms>_<first_id>.
  • request_body now uses the upstream stream_id (falling back to a UUID) so stream-only events keep a stable id across destinations and transports.

HTTP and S3 batched formats are breaking and gated per-group by the audit_event_streaming_via_nats flag; the per-event path is unchanged.

Closes - #605042 (closed) Part of epic &17582

References

Screenshots or screen recordings

Before After

How to set up and validate locally

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Merge request reports

Loading
Loading