Coder Social home page Coder Social logo

projectreactor.io's Introduction

Reactor Project

Join the chat at https://gitter.im/reactor/reactor

Download

Starting from 3.0, Reactor is now organized into multiple projects:

A set of compatible versions for all these projects is curated under a BOM ("Bill of Materials") hosted under this very repository.

Using the BOM with Maven

In Maven, you need to import the bom first:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-bom</artifactId>
            <version>2024.0.0-M1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Notice we use the <dependencyManagement> section and the import scope.

Next, add your dependencies to the relevant reactor projects as usual, except without a <version>:

<dependencies>
    <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
    </dependency>
    <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Using the BOM with Gradle

Gradle 5.0+

Use the platform keyword to import the Maven BOM within the dependencies block, then add dependencies to your project without a version number.

dependencies {
     // import BOM
     implementation platform('io.projectreactor:reactor-bom:2024.0.0-M1')

     // add dependencies without a version number
     implementation 'io.projectreactor:reactor-core'
}

Gradle 4.x and earlier

Gradle versions prior to 5.0 have no core support for Maven BOMs, but you can use Spring's gradle-dependency-management plugin.

First, apply the plugin from Gradle Plugin Portal (check and change the version if a new one has been released):

plugins {
    id "io.spring.dependency-management" version "1.0.11.RELEASE"
}

Then use it to import the BOM:

dependencyManagement {
     imports {
          mavenBom "io.projectreactor:reactor-bom:2024.0.0-M1"
     }
}

Then add a dependency to your project without a version number:

dependencies {
     compile 'io.projectreactor:reactor-core'
}

BOM Versioning Scheme

The BOM can be imported in Maven, which will provide a set of default artifact versions to use whenever the corresponding dependency is added to a pom without an explicitly provided version.

As the different artifacts versions are not necessarily aligned, the BOM represents a release train with an heterogeneous range of versions that are curated to work together. The artifact version follows the YYYY.MINOR.MICRO-QUALIFIER scheme since Europium, where:

  • YYYY is the year of the first GA release in a given release cycle (like 3.4.0 for 3.4.x)
  • .MINOR is a 0-based number incrementing with each new release cycle ** in the case of the BOM it allows discerning between release cycles in case two get first released the same year
  • .PATCH is a 0-based number incrementing with each service release
  • -QUALIFIER is a textual qualifier, which is omitted in the case of GA releases (see below)

On top of the artifact version, each release train has an associated codename, a chemical name from the Periodic Table of Elements in growing alphabetical order, for reference in discussions.

So far, the release trains code names are:

  • Aluminium for the 3.0.x generation of Reactor-Core (💡)
  • Bismuth for the 3.1.x generation (💡)
  • Californium for the 3.2.x generation (💡)
  • Dysprosium for the 3.3.x generation (💡)
  • Europium (2020.0) for the 3.4.x generation (💡)

NOTE: Up until Dysprosium, the BOM was versioned using a release train scheme with a codename followed by a qualifier, and the qualifiers were slightly different. For example: Aluminium-RELEASE (first GA release, would now be something like YYYY.0.0), Bismuth-M1, Californium-SR1 (service release would now be something like YYYY.0.1), Dysprosium-RC1, Dysprosium-BUILD-SNAPSHOT (after each patch, we'd go back to the same snapshot version. would now be something like YYYY.0.X-SNAPSHOT so we get 1 snapshot per PATCH).

Contributing, Community / Support

license

As hinted above, this repository is for hosting the BOM and for transverse issues only. Most of the time, if you're looking to open an issue or a PR, it should be done in a more specific repository corresponding to one of the actual artifacts.

All projects follow the same detailed contributing guidelines which you can find here.

This document also give some ways you can get answers to your questions.

Documentation

Detail of Projects

Reactor Core

Reactor Core

Reactive foundations for apps and frameworks and reactive extensions inspired API with Mono (1 element) and Flux (n elements) types

Reactor Netty

Reactor Netty

TCP and HTTP client and server.

Reactor Addons

Reactor Addons

Extra projects adding features to reactor:

Snapshot Artifacts

While Stable Releases are synchronized with Maven Central, fresh snapshot and milestone artifacts are provided in the repo.spring.io repositories.

To add this repo to your Maven build, add it to the <repositories> section like the following:

<repositories>
	<repository>
	    <id>spring-snapshot</id>
	    <name>Spring Snapshot Repository</name>
	    <url>https://repo.spring.io/snapshot</url>
	    <snapshots>
	        <enabled>true</enabled>
	    </snapshots>
	</repository>
</repositories>

To add it to your Gradle build, use the repositories configuration like this:

repositories {
	maven { url 'https://repo.spring.io/libs-snapshot' }
	mavenCentral()
}

You should then be able to import a -SNAPSHOT version of the BOM, like 2020.0.{NUMBER}-SNAPSHOT for the snapshot of the {NUMBER}th service release of 2020.0 (Europium).

Sponsored by VMware

projectreactor.io's People

Contributors

acogoluegnes avatar aneveu avatar bsideup avatar chemicl avatar claudiahub avatar fifthposition avatar jacksoncvm avatar jbrisbin avatar kim01jun avatar ktoso avatar lkwg82 avatar mp911de avatar olegdokuka avatar oodamien avatar pderop avatar rajinisivaram avatar renovate-bot avatar schananas avatar sdeleuze avatar simonbasle avatar smaldini avatar violetagg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

projectreactor.io's Issues

CSS Cleanup

The CSS and SASS is quite tentacular. There is duplication (for the sake of the legacy doc IIRC), but even in just the SASS I'm not even sure we use half of it...

The use of Compass is also problematic, as it has stopped evolving around 2014 (AFAIK) and gradle plugin is not compatible with Gradle 4.5 (which would be a blocker if we were to use Spring for example). There are SASS plugins that are more recent, but not Compass-compatible.

@oodamien any idea on a sane approach to clean up the CSS/SCSS?

Reference Manual does not completely load

There seems to be some kind of issue (maybe at the CloudFlare end?) when serving the reference manual at https://projectreactor.io/docs/core/release/reference/docs/index.html

The response returns HTTP 200, but an error happens while the content is being downloaded:

GET https://projectreactor.io/docs/core/release/reference/docs/index.html net::ERR_SPDY_PROTOCOL_ERROR

I can reproduce this 100% of the times using Chrome, Firefox and curl, though the specific point at which the content download stops and produces the error seems to change depending on the client. For example, using curl:

curl: (92) HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)

Unable to load full documentation

from @dddjoe

Tried both on Android 5 with chrome browser as well as on Firefox 5.2 on Ubuntu 17.04.

Firefox displays the following error in the console:

Blocked loading mixed active content “http://cdnjs.cloudflare.com/ajax/libs/semantic-ui/1.6.2/semantic.min.css”

Related to reactor/reactor-core#590

Getting error 405 method not allowed on client calls using Webclient

I am making multiple client calls to other Microservices from the Weblux app using Weblcient. There are over 500 elements in a flux and each element makes several api calls(each publisher makes 10 client calls) to other microservices. For some reason , which I dont know, for some requests , I am getting the error 405 method not allowed, even though the request never changes for every item in the publisher.

Expected Behavior

It should never give request not allowed error.

        Mono<Map> responseMono = this.webClientBuilder.baseUrl(URI).build()
                .get()
                .retrieve()
                .bodyToMono(Map.class)
                .log()
                .retryWhen(Retry.fixedDelay(1, Duration.ofMillis(200)));
        return responseMono ;
    }

This is the method used by all the items inside the Flux to make a client call. I have tried shifting weblcient calls to different scheduler , so that they dont share the same thread pool as of the application server, but this hack didnt solve the issue.

A typo in the Reference Guide

Here:

As an illustration of what it looks like, the following example both writes from and writes to Context:

It should be reads from, doesn't it?

405 Method is not Allowed exception: "Request Method 'T' not supported" for GET call and "Request Method 'ST' not supported" for POS

Hi Team,
I am facing a very strange issue in my project. It is related to rest API call using spring reactive webclient bulider. It is working fine on local and prod as well but abnormally giving below error after 3 or 4 request to same endpoint.
"org.springframework.web.server.MethodNotAllowedException: 405 METHOD_NOT_ALLOWED "Request method 'T' not supported"
This is valid exception as method going to "T" for Get method and "ST" for Post method .I am not able to understand why two starting charcter truncating from method name

Please help me resolve this error.

Docs are returing a 404 https://projectreactor.io/docs/core/release/reference/

When I access the url above which I used to be able to access, it returns a 404

Expected Behavior

A doc should be displayed on Project reactor core

Actual Behavior

I get a 404

Steps to Reproduce

https://projectreactor.io/docs/core/release/reference/#context

@Test
public void repoCase() {

}

Possible Solution

If a new url contains this info, redirect https://projectreactor.io/docs/core/release/reference/#context to that new url

Let {module}/doc/ list all known versions and their corresponding docs

There is currently no way to see pre-formed links to older versions of the docs (reference, javadoc, kotlin docs...).

It could be useful to have /docs/{module}/ pattern pull up a list of all known versions for that module, as links to the javadoc. Maybe even list refdocs and kdocs when relevant? (see #43 for a potential caveat: don't generate kdocs for some versions)

Release Javadoc links on https://projectreactor.io/docs are broken

All of the "Release" links under "Javadoc" on https://projectreactor.io/docs show a 404 page.
As a result, linking to these Javadoc pages also fails.

Note that "Snapshot" links work, as does the single "Milestone" link.

Expected Behavior

All of the "Release" links under "Javadoc" on https://projectreactor.io/docs should show the relevant Javadoc pages.

Actual Behavior

All of the "Release" links under "Javadoc" on https://projectreactor.io/docs show a 404 page.

Steps to Reproduce

Go to https://projectreactor.io/docs and click on any of the "Release" links.

Review security.txt in 2024 (Expires: 2024-08-31)

In /.well-known/security.txt we have an Expires field set to 31 August 2023.

This issue tracks the need to review the security.txt file content and security policy in general a few weeks before this time, and update the Expires to another later date.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/ci.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • actions/setup-java v4@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
  • gradle/gradle-build-action v3@fe59895742b4f984530980e4f693943577526b61
  • gradle/gradle-build-action v3@fe59895742b4f984530980e4f693943577526b61
.github/workflows/deploy-to-azure.yml
  • actions/checkout v4@b4ffde65f46336ab88eb53be808477a3936bae11
  • actions/setup-java v4@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
  • gradle/gradle-build-action v3@fe59895742b4f984530980e4f693943577526b61
  • azure/login v2@8c334a195cbb38e46038007b304988d888bf676a
  • azure/CLI v2@965c8d7571d2231a54e321ddd07f7b10317f34d9
  • azure/login v2@8c334a195cbb38e46038007b304988d888bf676a
  • azure/CLI v2@965c8d7571d2231a54e321ddd07f7b10317f34d9
gradle
settings.gradle
build.gradle.kts
gradle/libs.versions.toml
  • org.assertj:assertj-core 3.25.3
  • commons-logging:commons-logging 1.2
  • com.fasterxml.jackson.core:jackson-databind 2.17.0
  • com.google.code.findbugs:jsr305 [3.0.1, 3.0.1]
  • junit:junit 4.13.2
  • ch.qos.logback:logback-classic 1.4.14
  • io.projectreactor:reactor-bom 2020.0.43
  • org.slf4j:slf4j-api 2.0.12
  • org.yaml:snakeyaml 1.33
  • org.springframework:spring-core 5.3.33
  • org.thymeleaf:thymeleaf 3.0.15.RELEASE
  • io.miret.etienne.sass 1.4.1
  • com.github.johnrengelman.shadow 7.1.2
  • com.diffplug.spotless 6.13.0
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 7.5.1
html
src/main/resources/static/templates/layout.html
  • jquery 3.6.1@sha512-aVKKRRi/Q/YV+4mjoKBsE4x3H+BkegoM/em46NNlCqNTmUYADjBbeNefNxYV7giUp0VxICtqdrbqU7iVaeZNXA==

  • Check this box to trigger a request for Renovate to run again on this repository

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: .github/renovate.json
Error type: Invalid JSON (parsing failed)
Message: Syntax error: expecting end of expression or separator near
{

Pull jquery from cdnjs, Renovate should discover it

Renovate has an html manager, but it appears it only supports cdnjs provider.

Having CloudFlare's cdnjs script in layout.html should allow Renovate to discover the dependency and suggest upgrades when relevant.

Legacy documentation: cleanup HTML/images and replace with single PDF

Instead of having these legacy resources, generate a PDF of the latest 2.0.x reference documentation and host it under projectreactor.io/legacy. Mention it on the 404 template so that people looking at old links get a hint at where to look.

This would allow us to remove some of the static assets (legacy html, some images)...

Bad groupId on reference documentation

Expected behavior

Right GAV from documentation : org.reactivestreams:reactive-streams:1.0.2

Actual behavior

Documentation shows org.reactive-streams:reactive-streams:1.0.2

Steps to reproduce

N/A

Reactor Core version

Latest

JVM version (e.g. java -version)

N/A

OS version (e.g. uname -a)

N/A

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.