Giter Site home page Giter Site logo

spring-pulsar's Issues

Enforce coverage checks in maven builds

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.

Authentication support for TLS, Athenz, and Oauth2

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.

  • TLS
  • AuthenZ
  • Oauth2

These mechanisms of authentication are not supported by Spring Pulsar library.

Describe the solution you'd like
Support for below pulsar client authentication mechanism.

  • TLS
  • AuthenZ
  • Oauth2

Describe alternatives you've considered
There are no alternatives for it as of now.

Support for Apache Pulsars Reader API

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

Add support for producing messages using @PulsarProducer

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.

Reformat Error Handling section in Readme

Is your feature request related to a problem? Please describe.
Error Handling section is not formatted. For example

  • Class and interface name are normal text with fully qulified names, which looks ugly
  • Description is not properly paragraphed
  • Some descriptions can be put in as a note.

Describe the solution you'd like
Reformat Error Handling section.

  • Add class and interface names as links.
  • For class and interface name dont use fully qualified names.
  • Add notes as blockquote.
  • Properly paragraph descriptions.

Add section in Readme explaining property resolution support in @PulsarConsumer

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.

Add support for client authentication using Athenz

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

Enhace Getting Started section in Readme

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.

  • Cloning the repo
  • Executing mvn clean install.

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.

  • Which version of Java and maven should be present in machine
  • How to setup GPG?
  • Setup of docker to run pulsar container.
  • Executing pulsar container before running maven clean install

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.

Support for Pulsar Function creation using Spring For Pulsar library.

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

  • consume messages from one or more Pulsar topics,
  • apply a user-supplied processing logic to each message,
  • publish the results of the computation to another topic.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.