Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Overview

Flowing Retail

This sample application demonstrates a simple order fulfillment system, decomposed into multiple independent components (that is to say: microservices).

The repository contains code for multiple implementation alternatives to allow a broad audience to understand the code and to compare alternatives. The table below lists these alternatives.

The example respects learnings from Domain Driven Design (DDD), Event Driven Architecture (EDA) and Microservices (µS) and is designed to give you hands-on access to these topics.

Note: The code was written in order to be explained. Hence, I favored simplified code or copy & paste over production-ready code with generic solutions. Don't consider the coding style best practice! It is purpose-written to be easily explainable code.

Flowing retail simulates a very easy order fulfillment system:

Events and Commands

Architecture and implementation alternatives

The most fundamental choice is to select the communication mechanism:

  • Apache Kafka as event bus (could be easily changed to messaging, e.g. RabbitMQ):
  • REST communication between Services.
    • This example also shows how to do stateful resilience patterns like stateful retries leveraging a workflow engine.
  • Zeebe broker doing work distribution.

After the communication mechanism, the next choice is the workflow engine:

  • Camunda BPM 7
  • Zeebe (if you are interested why Zeebe is listed in the communication mechanism as well as workflow engine please look into the Zeebe example readme)
  • Zeebe hosted on Camunda Cloud

and the programming language:

  • Java
  • Go
  • JavaScript / TypeScript

Storyline

Flowing retail simulates a very easy order fulfillment system. The business logic is separated into the services shown above (shown as a context map).

Long running services and orchestration

Some services are long running in nature - for example: the payment service asks customers to update expired credit cards. A workflow engine is used to persist and control these long running interactions.

Workflows live within service boundaries

Note that the state machine (or workflow engine in this case) is a library used within one service. If different services need a workflow engine they can run whatever engine they want. This way it is an autonomous team decision if they want to use a framework, and which one:

Events and Commands

Resilience patterns for synchronous communication

You also have to deal with basic communication problems, the specifics of which depend on the means of communication (for example: asynchronous messaging vs. blocking synchronous REST calls). You might use stateful retries for this.

V1

See REST example.

Links and background reading

Comments
  • registry.camunda.cloud/camunda-bpm-platform-ee:7.12.1

    registry.camunda.cloud/camunda-bpm-platform-ee:7.12.1

    Hi,

    Currently on using docker compose i get authorization errors on pulling: registry.camunda.cloud/camunda-bpm-platform-ee:7.12.1 can you please investigate?

    Thank you and regards, Leo de Blaauw

    opened by MrBambix 12
  • question: idiomatic to use one topic?

    question: idiomatic to use one topic?

    hello,

    i'm quite new to camunda and bpmn, so please for please forgive if this sounds stupid. is it idiomatic, recommended, or even necessary to have one (kafka) topic for all the messages flowing through the system? i'm hoping that this show-case repo uses only one in order to keep the complexity low. but i would expect dedicated topics between the stages.

    one topic for all doesn't seem to me be good option from a scalability and performance perspective. having each listening party on the event-bus to read, evaluate, and optionally discard a message is costly. the more stages, the more event-/command-messages there will be, and the more events each component/listener needs to consume/process.

    at least this is how i explain, why i can see a big difference in processing time of each order when placing 1 order vs 1000 orders at a time. (admitted, the later use-case is not frequent, but can regularly arise when the "order" application would have a temporary outage for some time and would need to catch up after being brought up again.)

    i've extended the code a little bit by measuring the duration of the examples individual stages: https://github.com/xitep/flowing-retail/commits/pete/customization

    i'm based on a few commits behind your current master but there were no significant changes i believe. you can run the applications via mvn -f <app> exec:java, follow the "order" application's log to see the timings per order and then place for example 1000 orders using curl:

    curl -X PUT 'http://localhost:8090/api/cart/order-many?customerId=123&numOrders=1000'
    

    maybe i'm misinterpreting something, but i appears that payment, fetching and shipping goods get more costly the more orders there are in the pipeline which i would not expect.

    many thanks for clarifications in advance.

    opened by xitep 8
  • Kafka dies during docker startup on Windows

    Kafka dies during docker startup on Windows

    When starting up everything via Docker on Windows I experienced problems.

    Somehow the Kafka docker container gets unresponsive:

    C:\Users\ruecker>docker exec -i -t kafka_kafka_1 /bin/bash Error response from daemon: Container 1bd116be6408531af7bb323e8f64890ed30d192366d092032c79f19565fa8a9a is not running

    This leads to some services to timeout on startup: inventory_1 | Caused by: org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeout: 10000

    After some time sometimes Kafka heals, but I also had to restart docker completely.

    It does not happen if I remove two services (e.g. inventory & shipping) though.

    opened by berndruecker 5
  • Maven issue

    Maven issue

    When i run mvn install as described in the readme i get the following

    Downloading: https://app.camunda.com/nexus/content/groups/public/org/camunda/camunda-release-parent/2.5/camunda-release-parent-2.5.pom Downloaded: https://app.camunda.com/nexus/content/groups/public/org/camunda/camunda-release-parent/2.5/camunda-release-parent-2.5.pom (13 KB at 108.2 KB/sec) [ERROR] [ERROR] Some problems were encountered while processing the POMs: [ERROR] Non-resolvable import POM: Could not find artifact org.camunda.bpm:camunda-bom:pom:7.7.3-ee in camunda-bpm-nexus (https://app.camunda.com/nexus/content/groups/public) @ line 20, column 16 @ [ERROR] The build could not read 1 project -> [Help 1] [ERROR]

    Thanks

    opened by ccristian 5
  • Can't find event handler for Payment RetrievePaymentCommand event

    Can't find event handler for Payment RetrievePaymentCommand event

    Hi there, This application doesn't work. I can receive an Order "OrderPlacedEvent" after posting an Order via Checkout Service, however the Payment Service is never triggered.

    I'm running: -Local Zeebe (zeebe-broker-0.20.0); -Local Kafka (kafka_2.12-2.2.0) -Java 8

    Thanks, Marcus

    opened by marcusfaoro 4
  • No such host is known (<Cluster Id>.zeebe.camunda.io)

    No such host is known (.zeebe.camunda.io)

    Hello, When trying to run this example: I got the following error : Steps done:

    • application.properties in all microservices was updated with the right credentials obtained from Camunda Cloud console.
    • mvn -f checkout exec:java Error : "Failed to resolve name. status=Status{code=UNAVAILABLE, description=Unable to resolve host .."

    @berndruecker , Thanks in advance for your help.

    opened by sabriGit 3
  • Error When starting Order and Payement

    Error When starting Order and Payement

    Noticed an error while starting thw two apps (individually they work)

    Might be some shared lock on files ? same db ?

    org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-196]) at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

    opened by ccristian 3
  • Order & Payment doesn't run

    Order & Payment doesn't run

    I execute the commands:

    mvn -f order exec:java -D exec.mainClass="io.flowing.retail.order.OrderApplication" mvn -f payment exec:java -D exec.mainClass="io.flowing.retail.payment.PaymentApplication"

    Caused by: javax.servlet.ServletException: Could not read security filter config file '/securityFilterRules.json': no such resource in servlet context.

    The microservice doesn't start.

    Help me please

    opened by lsantaniello 3
  • Nodejs

    Nodejs

    Node.js implementation of the fake stripe and rest, controllers 1 - 2 are complete.

    Controller 3 needs a bit more work.

    Controller 4 and 6 still need implementing.

    opened by jwulf 2
  • docker-compose for zeebe-track does not start fully (mongo error)

    docker-compose for zeebe-track does not start fully (mongo error)

    steps to reproduce navigate to runner/docker-compose/docker-compose-kafka-java-choreography-zeebe-track.yml run docker-compose -f docker-compose-kafka-java-choreography-zeebe-track.yml up

    behavior two services don't start because of exceptions docker-compose_zeebe-track_1 exited with code 2 docker-compose_zeebe-simple-monitor_1 exited with code 1

    stack trace snippets from zeebe-track

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'zeebeSimpleMonitorApp': Invocation of init method failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 13 and error message 'command find requires authentication' on server mongo:27017; nested exception is com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication' on server mongo:27017

    Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication' on server mongo:2701

    stack trace snippets for simple-monitor

    2020-01-11 20:46:15.404 INFO 1 --- [l'}-mongo:27017] org.mongodb.driver.cluster : Monitor thread successfully connected to server with description ServerDescription{address=mongo:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 2, 2]}, minWireVersion=0, maxWireVersion=8, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=25376579} 2020-01-11 20:46:17.784 INFO 1 --- [ main] i.z.zeebemonitor.ZeebeSimpleMonitorApp : initialize connection 2020-01-11 20:46:17.962 INFO 1 --- [ main] org.mongodb.driver.connection : Opened connection [connectionId{localValue:2, serverValue:2}] to mongo:27017 2020-01-11 20:46:18.073 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'zeebeSimpleMonitorApp': Invocation of init method failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 13 and error message 'command find requires authentication' on server mongo:27017; nested exception is com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication' on server mongo:27017 2020-01-11 20:46:18.086 INFO 1 --- [ main] org.mongodb.driver.connection : Closed connection [connectionId{localValue:2, serverValue:2}] to mongo:27017 because the pool has been closed. 2020-01-11 20:46:18.110 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2020-01-11 20:46:18.160 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener :

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'zeebeSimpleMonitorApp': Invocation of init method failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 13 and error message 'command find requires authentication' on server mongo:27017; nested exception is com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication' on server mongo:27017

    opened by bmccann36 2
  • Problem with Jersey on Order Camunda microservice

    Problem with Jersey on Order Camunda microservice

    Hello, I've tried to start the Order Camunda microservice with mvn -f order-camunda exec:java but I've got the following error :

    [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project flowing-retail-kafka-order-camunda: An exception occured while executing the Java class. Error processing condition on org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat: Failed to introspect Class [org.camunda.bpm.spring.boot.starter.rest.CamundaBpmRestJerseyAutoConfiguration] from ClassLoader [java.net.URLClassLoader@6e5c9a5d]: javax/ws/rs/core/Configurable: javax.ws.rs.core.Configurable

    I needed to add the Jersey librairie dependancy in pom.xml with : javax.ws.rs javax.ws.rs-api 2.1.1 org.glassfish.jersey.core jersey-common 2.28

    opened by damageco 2
  • Bump express and @nestjs/platform-express in /rest/nodejs-nest/payment-zeebe

    Bump express and @nestjs/platform-express in /rest/nodejs-nest/payment-zeebe

    Bumps express to 4.18.2 and updates ancestor dependency @nestjs/platform-express. These dependencies need to be updated together.

    Updates express from 4.17.1 to 4.18.2

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Updates @nestjs/platform-express from 6.11.11 to 9.2.1

    Release notes

    Sourced from @​nestjs/platform-express's releases.

    v9.2.1 (2022-11-29)

    Bug fixes

    Enhancements

    Dependencies

    Committers: 6

    v9.2.0 (2022-11-07)

    Features

    Bug fixes

    • core
    • common, platform-express
      • #10345 fix(platform): shutdown hooks not firing caused by open http connections (@​tolgap)

    Enhancements

    • core

    ... (truncated)

    Commits
    • 308599f chore(@​nestjs) publish v9.2.1 release
    • e635224 Merge pull request #10573 from rubiin/master
    • d827878 Merge pull request #10556 from nestjs/dependabot/npm_and_yarn/socket.io-parse...
    • 0ee84c4 Merge pull request #10591 from Leichtwind/master
    • ef917e0 Merge pull request #10606 from aradwann/remove-deprecated-type-dependencies
    • f6fa850 Merge pull request #10599 from nestjs/dependabot/npm_and_yarn/redis-4.5.1
    • 900be19 Merge pull request #10605 from ufec/ufec-fix-10604-branch
    • 3009353 Merge pull request #10583 from nestjs/dependabot/npm_and_yarn/fastify-4.10.2
    • 6aeed12 build: remove deprecated type deps
    • cd55a18 fix: fastify-adapter register func sign
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump express and @nestjs/platform-express in /rest/nodejs-nest/stripe-fake

    Bump express and @nestjs/platform-express in /rest/nodejs-nest/stripe-fake

    Bumps express to 4.18.2 and updates ancestor dependency @nestjs/platform-express. These dependencies need to be updated together.

    Updates express from 4.17.1 to 4.18.2

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Updates @nestjs/platform-express from 6.11.11 to 9.2.1

    Release notes

    Sourced from @​nestjs/platform-express's releases.

    v9.2.1 (2022-11-29)

    Bug fixes

    Enhancements

    Dependencies

    Committers: 6

    v9.2.0 (2022-11-07)

    Features

    Bug fixes

    • core
    • common, platform-express
      • #10345 fix(platform): shutdown hooks not firing caused by open http connections (@​tolgap)

    Enhancements

    • core

    ... (truncated)

    Commits
    • 308599f chore(@​nestjs) publish v9.2.1 release
    • e635224 Merge pull request #10573 from rubiin/master
    • d827878 Merge pull request #10556 from nestjs/dependabot/npm_and_yarn/socket.io-parse...
    • 0ee84c4 Merge pull request #10591 from Leichtwind/master
    • ef917e0 Merge pull request #10606 from aradwann/remove-deprecated-type-dependencies
    • f6fa850 Merge pull request #10599 from nestjs/dependabot/npm_and_yarn/redis-4.5.1
    • 900be19 Merge pull request #10605 from ufec/ufec-fix-10604-branch
    • 3009353 Merge pull request #10583 from nestjs/dependabot/npm_and_yarn/fastify-4.10.2
    • 6aeed12 build: remove deprecated type deps
    • cd55a18 fix: fastify-adapter register func sign
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump qs from 6.5.2 to 6.5.3 in /rest/nodejs-nest/payment-zeebe

    Bump qs from 6.5.2 to 6.5.3 in /rest/nodejs-nest/payment-zeebe

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump qs from 6.5.2 to 6.5.3 in /rest/nodejs-nest/stripe-fake

    Bump qs from 6.5.2 to 6.5.3 in /rest/nodejs-nest/stripe-fake

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /rest/nodejs-nest/payment-zeebe

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /rest/nodejs-nest/payment-zeebe

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /rest/nodejs-nest/stripe-fake

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /rest/nodejs-nest/stripe-fake

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
Owner
Bernd Ruecker
Process automation enthusiast. Co-founder and chief technologist of http://camunda.com . Blog, articles and talks at https://berndruecker.io
Bernd Ruecker
KBE Spring Boot Microservices

SFG Beer Works - Brewery Microservices This project has a services of microservices for deployment via Docker Compose and Kubernetes. You can access t

John Thompson 29 Nov 2, 2022
Takin is an Java-based, open-source system designed to measure online or test environmental performance test for full-links, Especially for microservices

Takin is an Java-based, open-source system designed to measure online environmental performance test for full-links, Especially for microservices. Through Takin, middlewares and applications can identify real online traffic and test traffic, ensure that they enter the right databases.

ShulieTech 1.2k Dec 21, 2022
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

AOL 936 Dec 19, 2022
Lightweight framework for building java microservices

Ja-micro Ja-micro is a lightweight Java framework for building microservices. Introduction Ja-micro is a framework that allows developers to easily de

Sixt 621 Aug 21, 2022
WSO2 Microservices Framework for Java (MSF4J)

Build status: WSO2 Microservices Framework for Java (MSF4J) WSO2 Microservices Framework for Java (MSF4J) is a lightweight high performance framework

WSO2 359 Dec 27, 2022
Source Code for 'Pro Java Microservices with Quarkus and Kubernetes' by Nebrass Lamouchi

Apress Source Code This repository accompanies Pro Java Microservices with Quarkus and Kubernetes by Nebrass Lamouchi (Apress, 2021). Download the fil

Apress 24 Oct 31, 2022
A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)

Sentinel: The Sentinel of Your Microservices Introduction As distributed systems become increasingly popular, the reliability between services is beco

Alibaba 20.4k Dec 31, 2022
ColocationSim: Simulate Colocation Datacenter in a Fine Granularity with Microservices and Interference Modeling

ColocationSim Introduction 将在线作业和离线作业混合部署在同一集群(简称混部,Colocation)提升数据中心资源利用率的主流方法,如何在保证在线作业性能的前提下最大化集群的资源利用率成为混部相关研究中最主要问题。混部作业调度算法从集群层面解决这一问题,是学术界、企业界的

null 93 Jan 4, 2023
LINE 4.1k Jan 2, 2023
Drone Service REST API in Spring boot

Drones Service REST API ?? START Introduction There is a major new technology that is destined to be a disruptive force in the field of transportation

Moses-K 1 Feb 4, 2022
Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo Project Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and document

The Apache Software Foundation 38.3k Jan 9, 2023
Opinionated libraries for HTTP&JSON-based RPC using Retrofit, Feign, OkHttp as clients and Jetty/Jersey as servers

Conjure Java Runtime (formerly http-remoting) This repository provides an opinionated set of libraries for defining and creating RESTish/RPC servers a

Palantir Technologies 76 Dec 13, 2022
Library which allows the use and rendering of Blockbench models and animations in a Minecraft server by using generated resource packs and armorstands

Hephaestus Engine Hephaestus Engine is a library which allows the visualization of block bench models and animations in a Minecraft server by the use

Unnamed Team 109 Dec 21, 2022
[JAVA] Projeto exemplo de uma arquitetura modular em Java

Arquitetura modular O objetivo do bom design de software, como já diria Robert C. Martin, em seu livro 'Clean Architecture: A Craftsman's Guide to Sof

HelpDEV 97 Dec 29, 2022
Java client for Consul HTTP API

consul-api Java client for Consul HTTP API (http://consul.io) Supports all API endpoints (http://www.consul.io/docs/agent/http.html), all consistency

Ecwid 402 Jan 6, 2023
Define Java service providers by annotating them directly

Annotated Service Provider Define JVM service providers by annotating the provider class directly. This annotation processor will add to the class-pat

Emily 5 Oct 31, 2021
Evgeniy Khyst 54 Dec 28, 2022
Community extension to generate a Java client from the provided Camunda 7 OpenAPI descitpion and also warp it into Spring Boot

Camunda Engine OpenAPI REST Client Java and Spring Boot This community extension is a convenience wrapper around the generated Java client from the Ca

Camunda Community Hub 29 Dec 28, 2022
This is a sample application demonstrating Quarkus features and best practices

Quarkus Superheroes Sample Table of Contents Introduction Project automation GitHub action automation Application Resource Generation Running Locally

QuarkusIO 123 Jan 6, 2023