-
-
Notifications
You must be signed in to change notification settings - Fork 7.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(microservice) Kafka Support #2361 #2735
feat(microservice) Kafka Support #2361 #2735
Conversation
# Conflicts: # integration/microservices/package-lock.json # package.json
# Conflicts: # package-lock.json # package.json
# Conflicts: # integration/docker-compose.yml # package-lock.json # package.json
…still needs design.
Whoops, looks like I messed up some dependencies. Fixing now. |
@kamilmysliwiec I have no illusions that this is complete. However, your input would be greatly appreciated. |
Can you elaborate on how the communication is being handled right now? |
df3a77f
to
6ec98b8
Compare
@kamilmysliwiec would love to have this included in 6.6.0. Let me know what I have to do to make that happen and I will. |
@mkaufmaner is it ready?, do you need any other help?, i hope my help was enough. can't wait to use it, i need this Kafka message queue for my application. Also, i think we need to add a |
We still have to cover these 2 things:
|
@kamilmysliwiec Alright, I'll merge 6.6.0 into this branch, integrate the serializer/deserializers and work on the documentation. |
…-6-6-0 # Conflicts: # package-lock.json # packages/microservices/interfaces/index.ts # packages/microservices/test/listeners-controller.spec.ts
@kamilmysliwiec Should I extend the the serializer/deserializers with Kafka specific serializers (ie. |
The key responsibility of serializers/deserializers is to adjust incoming/outgoing packages to the unique format required by NestJS. In the best-case scenario, you should use the exact same serializers for Kafka as we use for any other strategy (since Kafka should be considered as an official strategy eventually) |
Understandable. However, I don't really see any other way. There is the problem where message keys, values, and headers are buffers which would require the developer to implement their own serialization within their controllers. Subsequently, when a developer changes transports, they would have to modify their controllers significantly. There is also a problem maintaining interoperability within the cluster if we utilize the existing serializers/deserializers. This is because message headers are utilized for message metadata like correlation ids, reply topics, and reply partitions. |
@mkaufmaner unfortunately, I can't tell you more before I dive into the code :( I'll try to do review it as soon as possible |
@kamilmysliwiec I see that in some servers like |
@mkaufmaner actually, no. That's the reason why transport-related parsing is located directly in classes, whereas high-level serialization/deserialization (alignment to external/internal systems) is being done in dedicated serializers/deserializers. Hence, they can be shared among different transport strategies by default. |
@kamilmysliwiec Gotcha. |
…e-6-6-0 # Conflicts: # package-lock.json
@kamilmysliwiec I implemented the serializers/deserializers. However, can't seem to get the CircleCI builds to run. |
Thank you @mkaufmaner. I have adjusted performed changes to the current codebase style and merged PR. I hope to publish this feature within 6.7.0 release. |
I c this is released, Thank u :) Is there any documentation? @mkaufmaner |
@kamilmysliwiec Hello, Great work! |
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
#2361
Issue Number: #2361
What is the new behavior?
Does this PR introduce a breaking change?
Other information