Skip to content

butljon/r2dbc-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

r2dbc-demo

Spring R2DBC Prototype

Implements against PLSQL R2DBC connector with e.g. localhost available DB service (see src/main/resources/r2dbc-demo.psql for schema requirements).

Transactions can be inserted via REST POST with uniqueness criteria (period, sequence). These will be accumulated into aggregates, the latter having uniqueness criteria (period).

Play with:

  • Spring Data transactionality,
  • error handling (you can force such by e.g. additionally annotating @Column("a_count") with @NonNull),
  • synchronisation and thread safety,

and see how reactive R2DBC operations behave under concurrency.

src/main/resources/application-secrets.yml will need to be created locally, containing:

   spring:
      r2dbc:
         username: user
         password: pass

(make sure not to forget secrets as a Spring profile, e.g. mvn clean spring-boot:run -Dspring-boot.run.profiles=secrets)

EPs exposed:

latter accepting (JSON) payload such as,

   { "period": 0, "sequence": 0 }

Have a look at src/test/jmeter/r2dbc-demo_POST_transaction.jmx for sample Apache JMeter test plan which can be run, e.g. env JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 jmeter -n -t r2dbc-demo_POST_transaction.jmx -l results.csv (env JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 jmeter & in UI).

Rudimentary tests (using R2DBC H2 mem DB) can be run, e.g. mvn clean test -Dspring.profiles.active=test.

Prerequisites: Java 17, PostgreSQL server available somewhere.

Have fun :)