Skip to content

Commit 555a384

Browse files
mensfeldnijikon
andauthored
Add note on the project nature and PRs types (#351)
* add note on the project nature and PRs types * remove extra line --------- Co-authored-by: Tomasz Pajor <[email protected]>
1 parent 91a97cf commit 555a384

File tree

1 file changed

+30
-18
lines changed

1 file changed

+30
-18
lines changed

README.md

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,27 @@ The most important pieces of a Kafka client are implemented, and we aim to provi
2222

2323
## Table of content
2424

25+
- [Project Scope](#project-scope)
2526
- [Installation](#installation)
2627
- [Usage](#usage)
27-
* [Consuming messages](#consuming-messages)
28-
* [Producing messages](#producing-messages)
29-
- [Higher level libraries](#higher-level-libraries)
30-
* [Message processing frameworks](#message-processing-frameworks)
31-
* [Message publishing libraries](#message-publishing-libraries)
28+
* [Consuming Messages](#consuming-messages)
29+
* [Producing Messages](#producing-messages)
30+
- [Higher Level Libraries](#higher-level-libraries)
31+
* [Message Processing Frameworks](#message-processing-frameworks)
32+
* [Message Publishing Libraries](#message-publishing-libraries)
3233
- [Development](#development)
3334
- [Example](#example)
3435

36+
## Project Scope
37+
38+
While rdkafka-ruby aims to simplify the use of librdkafka in Ruby applications, it's important to understand the limitations of this library:
39+
40+
- **No Complex Producers/Consumers**: This library does not intend to offer complex producers or consumers. The aim is to stick closely to the functionalities provided by librdkafka itself.
41+
42+
- **Focus on librdkafka Capabilities**: Features that can be achieved directly in Ruby, without specific needs from librdkafka, are outside the scope of this library.
43+
44+
- **Existing High-Level Functionalities**: Certain high-level functionalities like producer metadata cache and simple consumer are already part of the library. Although they fall slightly outside the primary goal, they will remain part of the contract, given their existing usage.
45+
3546

3647
## Installation
3748

@@ -42,7 +53,7 @@ If you have any problems installing the gem, please open an issue.
4253

4354
See the [documentation](https://karafka.io/docs/code/rdkafka-ruby/) for full details on how to use this gem. Two quick examples:
4455

45-
### Consuming messages
56+
### Consuming Messages
4657

4758
Subscribe to a topic and get messages. Kafka will automatically spread
4859
the available partitions over consumers with the same group id.
@@ -60,7 +71,7 @@ consumer.each do |message|
6071
end
6172
```
6273

63-
### Producing messages
74+
### Producing Messages
6475

6576
Produce a number of messages, put the delivery handles in an array, and
6677
wait for them before exiting. This way the messages will be batched and
@@ -87,41 +98,42 @@ Note that creating a producer consumes some resources that will not be
8798
released until it `#close` is explicitly called, so be sure to call
8899
`Config#producer` only as necessary.
89100

90-
## Higher level libraries
101+
## Higher Level Libraries
91102

92103
Currently, there are two actively developed frameworks based on rdkafka-ruby, that provide higher-level API that can be used to work with Kafka messages and one library for publishing messages.
93104

94-
### Message processing frameworks
105+
### Message Processing Frameworks
95106

96107
* [Karafka](https://github.com/karafka/karafka) - Ruby and Rails efficient Kafka processing framework.
97108
* [Racecar](https://github.com/zendesk/racecar) - A simple framework for Kafka consumers in Ruby
98109

99-
### Message publishing libraries
110+
### Message Publishing Libraries
100111

101112
* [WaterDrop](https://github.com/karafka/waterdrop) – Standalone Karafka library for producing Kafka messages.
102113

103114
## Development
104115

105-
A Docker Compose file is included to run Kafka. To run
106-
that:
116+
Contributors are encouraged to focus on enhancements that align with the core goal of the library. We appreciate contributions but will likely not accept pull requests for features that:
117+
118+
- Implement functionalities that can achieved using standard Ruby capabilities without changes to the underlying rdkafka-ruby bindings.
119+
- Deviate significantly from the primary aim of providing librdkafka bindings with Ruby-friendly interfaces.
120+
121+
A Docker Compose file is included to run Kafka. To run that:
107122

108123
```
109124
docker-compose up
110125
```
111126

112-
Run `bundle` and `cd ext && bundle exec rake && cd ..` to download and
113-
compile `librdkafka`.
127+
Run `bundle` and `cd ext && bundle exec rake && cd ..` to download and compile `librdkafka`.
114128

115-
You can then run `bundle exec rspec` to run the tests. To see rdkafka
116-
debug output:
129+
You can then run `bundle exec rspec` to run the tests. To see rdkafka debug output:
117130

118131
```
119132
DEBUG_PRODUCER=true bundle exec rspec
120133
DEBUG_CONSUMER=true bundle exec rspec
121134
```
122135

123-
After running the tests, you can bring the cluster down to start with a
124-
clean slate:
136+
After running the tests, you can bring the cluster down to start with a clean slate:
125137

126138
```
127139
docker-compose down

0 commit comments

Comments
 (0)