Issue:
[Kafka] - Consolidate payment logs into a single topic for sessionizing

Consolidate intent, attempt, dispute, refund events into a single topic `hyperswitch-consolidated-events` for sessionizer to consume

#### Initial log structure
```json
{
  "log": {
    "merchant_id": "test",
    "payment_id": "p1",
    "attempt_id": "a1",
    ...
  }
  "log_type": "payment_attempt"
}
```


Resolution:
<think>
PR Context:
- Title: feat(consolidated-kafka-events): add consolidated kafka payment events
- Merged: 2024-06-03T09:30:52Z
- Files changed: 10 files
- Commits: 11 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
- add consolidated payment events to a single topic for sessionizing
- add millisecond precision to timestamp fields


### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [x] This PR modifies application configuration/en
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(consolidated-kafka-events): add consolidated kafka payment events (#4798)
Co-authored-by: hyper
Files to modify:


**crates/router/src/events.rs**
  Modify existing code

**crates/router/src/services/kafka.rs**
  Add:
    - function: private::new
    - function: private::key
    - function: private::event_type
    - function: private::creation_timestamp
    - struct: private::KafkaConsolidatedLog
    - struct: private::KafkaConsolidatedEvent
    - impl: impl KafkaConsolidatedEvent<'a, T>
    - impl: impl KafkaMessage for KafkaConsolidatedEvent<'a, T>
    - mod: private::dispute_event
    - mod: private::payment_attempt_event
    - mod: private::payment_intent_event
    - mod: private::refund_event

**crates/router/src/services/kafka/dispute_event.rs**
  Add:
    - function: pub::from_storage
    - function: private::key
    - function: private::event_type
    - struct: pub::KafkaDisputeEvent
    - impl: impl KafkaDisputeEvent<'a>
    - impl: impl super::KafkaMessage for KafkaDisputeEvent<'a>

**crates/router/src/services/kafka/payment_attempt_event.rs**
  Add:
    - function: pub::from_storage
    - function: private::key
    - function: private::event_type
    - struct: pub::KafkaPaymentAttemptEvent
    - impl: impl KafkaPaymentAttemptEvent<'a>
    - impl: impl super::KafkaMessage for KafkaPaymentAttemptEvent<'a>

**crates/router/src/services/kafka/payment_intent_event.rs**
  Add:
    - function: pub::from_storage
    - function: private::key
    - function: private::event_type
    - struct: pub::KafkaPaymentIntentEvent
    - impl: impl KafkaPaymentIntentEvent<'a>
    - impl: impl super::KafkaMessage for KafkaPaymentIntentEvent<'a>

**crates/router/src/services/kafka/refund_event.rs**
  Add:
    - function: pub::from_storage
    - function: private::key
    - function: private::event_type
    - struct: pub::KafkaRefundEvent
    - impl: impl KafkaRefundEvent<'a>
    - impl: impl super::KafkaMessage for KafkaRefundEvent<'a>