Skip to content

Commit 0475f51

Browse files
authored
Completing notes on Kafka consumers (#13834)
1 parent 68c697f commit 0475f51

File tree

1 file changed

+28
-7
lines changed
  • develop-docs/backend/application-domains

1 file changed

+28
-7
lines changed

develop-docs/backend/application-domains/kafka.mdx

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,36 @@ title: Kafka consumers
33
sidebar_order: 60
44
---
55

6-
## Creating a new consumer in Sentry
6+
## Create a new Kafka topic
77

8-
WIP! This is currently just a checklist.
8+
1. Add the topic to the `KAFKA_TOPIC_TO_CLUSTER` in [src/sentry/conf/server.py](https://github.com/getsentry/sentry/blob/master/src/sentry/conf/server.py):
9+
* e.g. `subscription-results-eap-items`
10+
2. Add the topic to `Topic` in [src/sentry/conf/types/kafka_definition.py](https://github.com/getsentry/sentry/blob/master/src/sentry/conf/types/kafka_definition.py)
11+
12+
## Define or re-use a processing strategy
13+
14+
In most cases a [Streaming Factory](https://getsentry.github.io/arroyo/getstarted.html#create-a-streaming-consumer) is what you want to when defining a consumer (see next section). You can find examples of it in [Sentry's code base](https://github.com/search?q=repo%3Agetsentry%2Fsentry+%28ProcessingStrategyFactory&type=code).
15+
16+
## Define a new Kafka consumer
917

1018
1. Add a new entry in the `KAFKA_CONSUMERS` key in
11-
`src/sentry/consumers/__init__.py`.
19+
[src/sentry/consumers/__init__.py](https://github.com/getsentry/sentry/blob/master/src/sentry/consumers/__init__.py):
20+
```python
21+
KAFKA_CONSUMERS = {
22+
"<your_topic_str_here>": {
23+
"topic": Topic.YOUR_TOPIC,
24+
"strategy_factory": "sentry_package_defining_your_strategy_factory_class",
25+
}
26+
}
27+
```
28+
2. You may need optional properties (e.g. `click_options`, you will need to research them by looking at [ConsumerDefinition](https://github.com/getsentry/sentry/blob/master/src/sentry/conf/types/kafka_definition.py)'s code.
1229

13-
2. Create ops PR for adding your consumer to
14-
`k8s/services/getsentry/consumer-deployment.yaml`.
30+
3. Make sure you can run it: `sentry run consumer <your_topic>`
31+
4. You may need to add some devserver options [here](https://github.com/getsentry/sentry/blob/master/src/sentry/runner/commands/devserver.py).
32+
4. Add tests for your consumer
1533

16-
3. In the Sentry Consumers metrics dashboard, add a new saved view for your
17-
consumer.
34+
## Run the consumer in production
35+
1. Discuss it with SRE during their office hours
36+
2. Create ops PR for adding your consumer to
37+
[k8s/services/getsentry/_consumer-deployment.yaml.j2](https://github.com/getsentry/ops/blob/master/k8s/services/getsentry/_consumer-deployment.yaml.j2).
38+
3. In the [Sentry Consumers metrics dashboard](https://www.notion.so/sentry/Kafka-e8b4f93595684c97b01fe831fbceb0dc?pvs=4#1fa8b10e4b5d8044859ecaf559463cb0), add a new saved view for your consumer.

0 commit comments

Comments
 (0)