Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork36
The goal of this project is to implement two Spring Boot applications: bitcoin-api and bitcoin-client. The bitcoin-api application simulates BTC price changes, while the bitcoin-client application listens to these changes and updates a real-time UI. The bitcoin-client UI is secured using Basic Authentication.
ivangfr/springboot-kafka-websocket
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The goal of this project is to implement twoSpring Boot
applications:bitcoin-api
andbitcoin-client
. Thebitcoin-api
application simulatesBTC
price changes, while thebitcoin-client
application listens to these changes and updates a real-time UI. Thebitcoin-client
UI is secured using Basic Authentication.
Onivangfr.github.io, I have compiled my Proof-of-Concepts (PoCs) and articles. You can easily search for the technology you are interested in by using the filter. Who knows, perhaps I have already implemented a PoC or written an article about what you are looking for.
bitcoin-api
Spring Boot
Web Java application service that simulatesBTC
price changes and pushes those changes toKafka
bitcoin-client
Spring Boot
Web Java application that was implemented usingThymeleaf
as HTML template. It reads fromKafka
and updates its UI usingWebsocket
. It has also a chat where users can talk to each other by sending messages publicly or privately.
Open a terminal and inside the
springboot-kafka-websocket
root folder run:docker compose up -d
Wait for Docker containers to be up and running. To check it, run:
docker ps -a
Inside thespringboot-kafka-websocket
root folder, run the followingMaven
commands in different terminals:
bitcoin-api
./mvnw clean spring-boot:run --projects bitcoin-api -Dspring-boot.run.jvmArguments="-Dserver.port=9081"
bitcoin-client
./mvnw clean spring-boot:run --projects bitcoin-client -Dspring-boot.run.jvmArguments="-Dserver.port=9082"
In a terminal, make sure you are inside the
springboot-kafka-websocket
root folder;In order to build the application docker images, run the following script:
./build-docker-images.sh
bitcoin-api
Environment Variable Description MYSQL_HOST
Specify host of the
MySQL
database to use (defaultlocalhost
)MYSQL_PORT
Specify port of the
MySQL
database to use (default3306
)KAFKA_HOST
Specify host of the
Kafka
message broker to use (defaultlocalhost
)KAFKA_PORT
Specify port of the
Kafka
message broker to use (default29092
)bitcoin-client
Environment Variable Description KAFKA_HOST
Specify host of the
Kafka
message broker to use (defaultlocalhost
)KAFKA_PORT
Specify port of the
Kafka
message broker to use (default29092
)
Application | URL | Credentials (user/pass) |
---|---|---|
bitcoin-api | ||
bitcoin-client |
|
The gif below shows two users checking real-time theBTC
price changes. Additionally, they are using a chat channel to communicate with each other.
Kafdrop
Kafdrop
can be accessed athttp://localhost:9000MySQL
docker exec -it -e MYSQL_PWD=secret mysql mysql -uroot --database bitcoindbselect * from prices;
To stop applications
If they were started with
Maven
, go to the terminals where they are running and pressCtrl+C
;If they were started as Docker containers, go to a terminal and, inside the
springboot-kafka-websocket
root folder, run the script below:./stop-apps.sh
To stop and remove docker compose containers, network and volumes, go to a terminal and, inside the
springboot-kafka-websocket
root folder, run the following command:docker compose down -v
About
The goal of this project is to implement two Spring Boot applications: bitcoin-api and bitcoin-client. The bitcoin-api application simulates BTC price changes, while the bitcoin-client application listens to these changes and updates a real-time UI. The bitcoin-client UI is secured using Basic Authentication.
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.