intuit / spring-pulsar Goto Github PK
View Code? Open in Web Editor NEWSpring client library for apache pulsar allows consuming applications to integrate easily with apache pulsar.
License: MIT License
Spring client library for apache pulsar allows consuming applications to integrate easily with apache pulsar.
License: MIT License
Describe the bug
Coverage checks are not enforced in maven builds. As of now once we run maven install, if the coverage is low the build is not failing.Either the coverage is not computed or if computed it is not enforced.
To Reproduce
Steps to reproduce the behavior:
Disable all unit tests and run mvn clean install build will succeed.
Expected behavior
Coverage should be computed and enforced. If project coverage is less that 95% or the diff coverage is less that 95% the build should fail.
Is your feature request related to a problem? Please describe.
Current implementation only supports basic authentication for pulsar client, while as per Apache Pulsar docs , pulsar also supports below three authentication mechanisms.
These mechanisms of authentication are not supported by Spring Pulsar library.
Describe the solution you'd like
Support for below pulsar client authentication mechanism.
Describe alternatives you've considered
There are no alternatives for it as of now.
Is your feature request related to a problem? Please describe.
Apache Pulsar client describes support for Reader API , Reader API is still not supported in Spring for pulsar.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Add support for Apache Pulsars , Reader API
Describe alternatives you've considered
No Alternatives.
Additional context
No Context
Is your feature request related to a problem? Please describe.
In order to publish messages users has to create a producer template, as shown in below code. Register this producer template as a spring bean , autowire it into any spring component and the use send() or sendAsync method to publish message.
@Configuration
open class ProducerConfiguration(val applicationContext: ApplicationContext) {
@Bean
open fun producerTemplate(): PulsarProducerTemplate<ByteArray> {
return PulsarProducerTemplateImpl<ByteArray>(
pulsarProducerConfig = PulsarProducerConfig(
schema = Schema.BYTES,
topicName = "persistent://tenent/namespace/topicName",
autoFlush = true),
applicationContext = applicationContext)
}
}
This is slightly cumbersome for basic and simple usecases where users just want to produce message without
worrying much about autowiring, injection and different properties to set for producer template.
Describe the solution you'd like
Just as for consumer we should provide a support for @PulsarProducer annotation.This annotation can be defined over public methods and object returned by the method will be published to pulsar topics.
Different configuration about the producer can be configured in @PulsarProducer annotation. Also we should have support for property resolution in @PulsarProducer as we have for @PulsarConsumer.
Is your feature request related to a problem? Please describe.
Error Handling section is not formatted. For example
Describe the solution you'd like
Reformat Error Handling section.
Is your feature request related to a problem? Please describe.
There are no docs related to property resolution support available in @PulsarConsumer.Because of this it is absolutely impossible for users to know about this useful feature.
Describe the solution you'd like
Add section in Readme explaining property resolution support in @PulsarConsumer. Add example code in both Java and Kotlin.
Is your feature request related to a problem? Please describe.
We have still not added support for Athenz. For some odd reason, Athenz related classes in pulsar-client is not avaialble.
As per the docs here. Below is the code to define and athez auth config.
Map<String, String> authParams = new HashMap();
authParams.put("tenantDomain", "shopping"); // Tenant domain name
authParams.put("tenantService", "some_app"); // Tenant service name
authParams.put("providerDomain", "pulsar"); // Provider domain name
authParams.put("privateKey", "file:///path/to/private.pem"); // Tenant private key path
authParams.put("keyId", "v1"); // Key id for the tenant private key (optional, default: "0")
Authentication athenzAuth = AuthenticationFactory
.create(AuthenticationAthenz.class.getName(), authParams);
But the AuthenticationAthenz is not available in pulsar-client library version 2.7.5.
Describe the solution you'd like
Support for client authentication using Athenz
Is your feature request related to a problem? Please describe.
The current details in Getting Started is not enough to setup a developement workspace. It just has two steps.
There are more steps and dependecies required tfor a developement workspace setup.
It also does not talk about different lifecycle phases that run on clean install.
In short the current description is not enough for creating a developement workspace.
Describe the solution you'd like
Add more details on Getting Started docs, so that it exhaustively details out every dependecy and steps to setup development workspace.
Few details that has to be added are.
The above is not an exhaustive list.
Additional context
The list defined above is not an exhaustive list of details that has to be added in Getting Started. We need to do fresh developement setup in a fresh machine and then figure out the steps , dependecies needed for setup.
After that add all the required steps and dependecies details in Getting Started.
Is your feature request related to a problem? Please describe.
Apache Pulsar docs describes support for Pulsar Function.It is something like AWS lambda.
Pulsar Functions are lightweight compute processes that
You can find more details about Pulsar Functions here.
Spring For Pulsar as of now does not support creation of Pulsar Function using spring-pulsar-core library.
Describe the solution you'd like
Support for Pulsar Function creation using Spring For Pulsar library.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.