Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringKafka

ℹ️ Information

Project developed with Spring, Kafka, Zookeeper, Schema-Registry, Rest-Proxy and Docker. Only the backend part was developed. Consumers and producers were created. In v1, only examples of consumers and products were developed. In v2, three applications were developed: consumers, producers and an application that is both producer and consumer. In these applications avro schemes were created for the consumption and sending of messages. A complete service environment was also created via docker-compose. For docker-compose there are two versions, which can be found in v1 and v2. It is recommended to use v2 with landoop.

Some explanations of the technologies that were used:

  • Schema Registry: Provides a service layer for message metadata. It provides a RESTful interface to store and retrieve the Avro schemas that were created and it uses Apache Kafka itself as a storage layer.

  • REST Proxy: Provides a RESTful interface to an Apache Kafka cluster, which facilitates the production and consumption of messages.

  • Apache Zookeeper: Kafka uses Zookeeper to synchronize settings between different clusters.

  • Consumer: Read data from any partition, allowing consumption to be scaled according to message production. They can also be organized into Consumer Groups for a given topic. Using Consumer Groups, each Consumer in the group reads from a single partition, so the group as a whole consumes messages from the entire topic.

  • Producer: They are conceptually simpler than Consumers, as there is no need for group coordination (Consumer Groups). Its main function is to map each message to a topic partition and send a production request to the partition leader.

Example of how Kafka works:

exemplo

⚠️ Prerequisite

Java Badge >= 17

Spring Badge

Kafka

Spring Boot Badge

JSON Badge

h2-logo-2 (1)

JPA-hibernate (1)

Docker

Postman Badge OR Insomnia Badge

🔧 Install

git clone https://github.com/RamonBecker/SpringKafka.git

git clone https://github.com/RamonBecker/SpringKafka.git
or install github https://desktop.github.com/ 

🔨 Docker

Before cloning the project, you will need to install docker on your operating system.

For windows, enter the following from the link:

https://docs.docker.com/desktop/windows/install/

For linux, follow the procedure below:

  • Update your existing list of packages:
sudo apt update
  • Install some prerequisite packages that let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • Add the GPG key to the official Docker repository on your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Add the Docker repository to the APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • Update the package database with Docker packages from the newly added repository:
sudo apt update
  • Make sure you are about to install from the Docker repository instead of the default Ubuntu repository:
apt-cache policy docker-ce
  • Install Docker:
sudo apt install docker-ce
  • Check if it is working:
sudo systemctl status docker

After cloning the project, perform the following Enter the services folder, then enter the v2 folder and run the following command:

docker-compose up 

Access to Landoop

Before accessing the landoop you must run the docker container that is in the service folder in v2 To access landoop, access your browser of choice:

http://localhost:3030/

With landoop you will be able to have an overview of your topics, brokers, messages, as well as verify that the following services are working:

9092 : Kafka Broker
8081 : Schema Registry
8082 : Kafka REST Proxy
2181 : ZooKeeper

landoop

🔨 POSTMAN

To test the end points you will need to install POSTMAN or Insomnia. I recommend installing POSTMAN. I'll leave the collections on the DRIVE to facilitate testing.

Download and import collections into your POSTMAN:

https://drive.google.com/drive/folders/1fJjv9oOSvx3ZhJShdG34Ok3hf_EjV5ZP?usp=sharing

⚙️ Testing the project

To test the project you will need to clone the repository on your machine. You can choose both tools: postman or insomnia.

To download postman go to the following link: https://www.postman.com/downloads/
To download insomnia rentre from the following link: https://insomnia.rest/download

Remembering that you must choose the operating system corresponding to your machine. After you have made your registration in these tools, run them and you must type the following in the address:

Producer endpoints:

localhost:8181/peoples
localhost:8181/cars

Rest-Proxy endpoints:

  • Check broker ID
localhost:8082/v3/clusters/
  • Topic creation
  • To create a topic, the broker ID must be consulted
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Check the topics
  • To verify the topic, the broker ID must be queried
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Send message to topic
http://localhost:8082/topics/topic-01
  • To create a group and a consumer
http://localhost:8082/consumers/consumer-group-01
  • To register a consumer
http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/subscription

To consume some message

http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/records

Accessing the H2 database

If you want to modify the user to access the database, modify the application.properties file. Change the following:

spring.datasource.username=user
spring.datasource.password=password

Access in browser

http://localhost:8080/h2-console

If the JDBC URL is not configured, replace it with:

jdbc:h2:mem:testdb

h2

⚡ Technologies

  • Java
  • JPA
  • Kafka
  • Hibernate
  • Spring Boot
  • H2 Database
  • Design Pattern MVC
  • Design Pattern DTO
  • Lombok

📝 Developed features

  • Consumer creation;
  • Producer creation;
  • Consume message;
  • Produce message;
  • Consult the topics

🧑‍💻 Author

By Ramon Becker 👋🏽 Get in touch!

githublinkedinGmail Badge

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringKafka

ℹ️ Information

Project developed with Spring, Kafka, Zookeeper, Schema-Registry, Rest-Proxy and Docker. Only the backend part was developed. Consumers and producers were created. In v1, only examples of consumers and products were developed. In v2, three applications were developed: consumers, producers and an application that is both producer and consumer. In these applications avro schemes were created for the consumption and sending of messages. A complete service environment was also created via docker-compose. For docker-compose there are two versions, which can be found in v1 and v2. It is recommended to use v2 with landoop.

Some explanations of the technologies that were used:

  • Schema Registry: Provides a service layer for message metadata. It provides a RESTful interface to store and retrieve the Avro schemas that were created and it uses Apache Kafka itself as a storage layer.

  • REST Proxy: Provides a RESTful interface to an Apache Kafka cluster, which facilitates the production and consumption of messages.

  • Apache Zookeeper: Kafka uses Zookeeper to synchronize settings between different clusters.

  • Consumer: Read data from any partition, allowing consumption to be scaled according to message production. They can also be organized into Consumer Groups for a given topic. Using Consumer Groups, each Consumer in the group reads from a single partition, so the group as a whole consumes messages from the entire topic.

  • Producer: They are conceptually simpler than Consumers, as there is no need for group coordination (Consumer Groups). Its main function is to map each message to a topic partition and send a production request to the partition leader.

Example of how Kafka works:

exemplo

⚠️ Prerequisite

Java Badge >= 17

Spring Badge

Kafka

Spring Boot Badge

JSON Badge

h2-logo-2 (1)

JPA-hibernate (1)

Docker

Postman Badge OR Insomnia Badge

🔧 Install

git clone https://github.com/RamonBecker/SpringKafka.git

git clone https://github.com/RamonBecker/SpringKafka.git
or install github https://desktop.github.com/ 

🔨 Docker

Before cloning the project, you will need to install docker on your operating system.

For windows, enter the following from the link:

https://docs.docker.com/desktop/windows/install/

For linux, follow the procedure below:

  • Update your existing list of packages:
sudo apt update
  • Install some prerequisite packages that let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • Add the GPG key to the official Docker repository on your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Add the Docker repository to the APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • Update the package database with Docker packages from the newly added repository:
sudo apt update
  • Make sure you are about to install from the Docker repository instead of the default Ubuntu repository:
apt-cache policy docker-ce
  • Install Docker:
sudo apt install docker-ce
  • Check if it is working:
sudo systemctl status docker

After cloning the project, perform the following Enter the services folder, then enter the v2 folder and run the following command:

docker-compose up 

Access to Landoop

Before accessing the landoop you must run the docker container that is in the service folder in v2 To access landoop, access your browser of choice:

http://localhost:3030/

With landoop you will be able to have an overview of your topics, brokers, messages, as well as verify that the following services are working:

9092 : Kafka Broker
8081 : Schema Registry
8082 : Kafka REST Proxy
2181 : ZooKeeper

landoop

🔨 POSTMAN

To test the end points you will need to install POSTMAN or Insomnia. I recommend installing POSTMAN. I'll leave the collections on the DRIVE to facilitate testing.

Download and import collections into your POSTMAN:

https://drive.google.com/drive/folders/1fJjv9oOSvx3ZhJShdG34Ok3hf_EjV5ZP?usp=sharing

⚙️ Testing the project

To test the project you will need to clone the repository on your machine. You can choose both tools: postman or insomnia.

To download postman go to the following link: https://www.postman.com/downloads/
To download insomnia rentre from the following link: https://insomnia.rest/download

Remembering that you must choose the operating system corresponding to your machine. After you have made your registration in these tools, run them and you must type the following in the address:

Producer endpoints:

localhost:8181/peoples
localhost:8181/cars

Rest-Proxy endpoints:

  • Check broker ID
localhost:8082/v3/clusters/
  • Topic creation
  • To create a topic, the broker ID must be consulted
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Check the topics
  • To verify the topic, the broker ID must be queried
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Send message to topic
http://localhost:8082/topics/topic-01
  • To create a group and a consumer
http://localhost:8082/consumers/consumer-group-01
  • To register a consumer
http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/subscription

To consume some message

http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/records

Accessing the H2 database

If you want to modify the user to access the database, modify the application.properties file. Change the following:

spring.datasource.username=user
spring.datasource.password=password

Access in browser

http://localhost:8080/h2-console

If the JDBC URL is not configured, replace it with:

jdbc:h2:mem:testdb

h2

⚡ Technologies

  • Java
  • JPA
  • Kafka
  • Hibernate
  • Spring Boot
  • H2 Database
  • Design Pattern MVC
  • Design Pattern DTO
  • Lombok

📝 Developed features

  • Consumer creation;
  • Producer creation;
  • Consume message;
  • Produce message;
  • Consult the topics

🧑‍💻 Author

By Ramon Becker 👋🏽 Get in touch!

githublinkedinGmail Badge

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringKafka

ℹ️ Information

Project developed with Spring, Kafka, Zookeeper, Schema-Registry, Rest-Proxy and Docker. Only the backend part was developed. Consumers and producers were created. In v1, only examples of consumers and products were developed. In v2, three applications were developed: consumers, producers and an application that is both producer and consumer. In these applications avro schemes were created for the consumption and sending of messages. A complete service environment was also created via docker-compose. For docker-compose there are two versions, which can be found in v1 and v2. It is recommended to use v2 with landoop.

Some explanations of the technologies that were used:

  • Schema Registry: Provides a service layer for message metadata. It provides a RESTful interface to store and retrieve the Avro schemas that were created and it uses Apache Kafka itself as a storage layer.

  • REST Proxy: Provides a RESTful interface to an Apache Kafka cluster, which facilitates the production and consumption of messages.

  • Apache Zookeeper: Kafka uses Zookeeper to synchronize settings between different clusters.

  • Consumer: Read data from any partition, allowing consumption to be scaled according to message production. They can also be organized into Consumer Groups for a given topic. Using Consumer Groups, each Consumer in the group reads from a single partition, so the group as a whole consumes messages from the entire topic.

  • Producer: They are conceptually simpler than Consumers, as there is no need for group coordination (Consumer Groups). Its main function is to map each message to a topic partition and send a production request to the partition leader.

Example of how Kafka works:

exemplo

⚠️ Prerequisite

Java Badge >= 17

Spring Badge

Kafka

Spring Boot Badge

JSON Badge

h2-logo-2 (1)

JPA-hibernate (1)

Docker

Postman Badge OR Insomnia Badge

🔧 Install

git clone https://github.com/RamonBecker/SpringKafka.git

git clone https://github.com/RamonBecker/SpringKafka.git
or install github https://desktop.github.com/ 

🔨 Docker

Before cloning the project, you will need to install docker on your operating system.

For windows, enter the following from the link:

https://docs.docker.com/desktop/windows/install/

For linux, follow the procedure below:

  • Update your existing list of packages:
sudo apt update
  • Install some prerequisite packages that let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • Add the GPG key to the official Docker repository on your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Add the Docker repository to the APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • Update the package database with Docker packages from the newly added repository:
sudo apt update
  • Make sure you are about to install from the Docker repository instead of the default Ubuntu repository:
apt-cache policy docker-ce
  • Install Docker:
sudo apt install docker-ce
  • Check if it is working:
sudo systemctl status docker

After cloning the project, perform the following Enter the services folder, then enter the v2 folder and run the following command:

docker-compose up 

Access to Landoop

Before accessing the landoop you must run the docker container that is in the service folder in v2 To access landoop, access your browser of choice:

http://localhost:3030/

With landoop you will be able to have an overview of your topics, brokers, messages, as well as verify that the following services are working:

9092 : Kafka Broker
8081 : Schema Registry
8082 : Kafka REST Proxy
2181 : ZooKeeper

landoop

🔨 POSTMAN

To test the end points you will need to install POSTMAN or Insomnia. I recommend installing POSTMAN. I'll leave the collections on the DRIVE to facilitate testing.

Download and import collections into your POSTMAN:

https://drive.google.com/drive/folders/1fJjv9oOSvx3ZhJShdG34Ok3hf_EjV5ZP?usp=sharing

⚙️ Testing the project

To test the project you will need to clone the repository on your machine. You can choose both tools: postman or insomnia.

To download postman go to the following link: https://www.postman.com/downloads/
To download insomnia rentre from the following link: https://insomnia.rest/download

Remembering that you must choose the operating system corresponding to your machine. After you have made your registration in these tools, run them and you must type the following in the address:

Producer endpoints:

localhost:8181/peoples
localhost:8181/cars

Rest-Proxy endpoints:

  • Check broker ID
localhost:8082/v3/clusters/
  • Topic creation
  • To create a topic, the broker ID must be consulted
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Check the topics
  • To verify the topic, the broker ID must be queried
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Send message to topic
http://localhost:8082/topics/topic-01
  • To create a group and a consumer
http://localhost:8082/consumers/consumer-group-01
  • To register a consumer
http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/subscription

To consume some message

http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/records

Accessing the H2 database

If you want to modify the user to access the database, modify the application.properties file. Change the following:

spring.datasource.username=user
spring.datasource.password=password

Access in browser

http://localhost:8080/h2-console

If the JDBC URL is not configured, replace it with:

jdbc:h2:mem:testdb

h2

⚡ Technologies

  • Java
  • JPA
  • Kafka
  • Hibernate
  • Spring Boot
  • H2 Database
  • Design Pattern MVC
  • Design Pattern DTO
  • Lombok

📝 Developed features

  • Consumer creation;
  • Producer creation;
  • Consume message;
  • Produce message;
  • Consult the topics

🧑‍💻 Author

By Ramon Becker 👋🏽 Get in touch!

githublinkedinGmail Badge

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringKafka

ℹ️ Information

Project developed with Spring, Kafka, Zookeeper, Schema-Registry, Rest-Proxy and Docker. Only the backend part was developed. Consumers and producers were created. In v1, only examples of consumers and products were developed. In v2, three applications were developed: consumers, producers and an application that is both producer and consumer. In these applications avro schemes were created for the consumption and sending of messages. A complete service environment was also created via docker-compose. For docker-compose there are two versions, which can be found in v1 and v2. It is recommended to use v2 with landoop.

Some explanations of the technologies that were used:

  • Schema Registry: Provides a service layer for message metadata. It provides a RESTful interface to store and retrieve the Avro schemas that were created and it uses Apache Kafka itself as a storage layer.

  • REST Proxy: Provides a RESTful interface to an Apache Kafka cluster, which facilitates the production and consumption of messages.

  • Apache Zookeeper: Kafka uses Zookeeper to synchronize settings between different clusters.

  • Consumer: Read data from any partition, allowing consumption to be scaled according to message production. They can also be organized into Consumer Groups for a given topic. Using Consumer Groups, each Consumer in the group reads from a single partition, so the group as a whole consumes messages from the entire topic.

  • Producer: They are conceptually simpler than Consumers, as there is no need for group coordination (Consumer Groups). Its main function is to map each message to a topic partition and send a production request to the partition leader.

Example of how Kafka works:

exemplo

⚠️ Prerequisite

Java Badge >= 17

Spring Badge

Kafka

Spring Boot Badge

JSON Badge

h2-logo-2 (1)

JPA-hibernate (1)

Docker

Postman Badge OR Insomnia Badge

🔧 Install

git clone https://github.com/RamonBecker/SpringKafka.git

git clone https://github.com/RamonBecker/SpringKafka.git
or install github https://desktop.github.com/ 

🔨 Docker

Before cloning the project, you will need to install docker on your operating system.

For windows, enter the following from the link:

https://docs.docker.com/desktop/windows/install/

For linux, follow the procedure below:

  • Update your existing list of packages:
sudo apt update
  • Install some prerequisite packages that let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • Add the GPG key to the official Docker repository on your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Add the Docker repository to the APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • Update the package database with Docker packages from the newly added repository:
sudo apt update
  • Make sure you are about to install from the Docker repository instead of the default Ubuntu repository:
apt-cache policy docker-ce
  • Install Docker:
sudo apt install docker-ce
  • Check if it is working:
sudo systemctl status docker

After cloning the project, perform the following Enter the services folder, then enter the v2 folder and run the following command:

docker-compose up 

Access to Landoop

Before accessing the landoop you must run the docker container that is in the service folder in v2 To access landoop, access your browser of choice:

http://localhost:3030/

With landoop you will be able to have an overview of your topics, brokers, messages, as well as verify that the following services are working:

9092 : Kafka Broker
8081 : Schema Registry
8082 : Kafka REST Proxy
2181 : ZooKeeper

landoop

🔨 POSTMAN

To test the end points you will need to install POSTMAN or Insomnia. I recommend installing POSTMAN. I'll leave the collections on the DRIVE to facilitate testing.

Download and import collections into your POSTMAN:

https://drive.google.com/drive/folders/1fJjv9oOSvx3ZhJShdG34Ok3hf_EjV5ZP?usp=sharing

⚙️ Testing the project

To test the project you will need to clone the repository on your machine. You can choose both tools: postman or insomnia.

To download postman go to the following link: https://www.postman.com/downloads/
To download insomnia rentre from the following link: https://insomnia.rest/download

Remembering that you must choose the operating system corresponding to your machine. After you have made your registration in these tools, run them and you must type the following in the address:

Producer endpoints:

localhost:8181/peoples
localhost:8181/cars

Rest-Proxy endpoints:

  • Check broker ID
localhost:8082/v3/clusters/
  • Topic creation
  • To create a topic, the broker ID must be consulted
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Check the topics
  • To verify the topic, the broker ID must be queried
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Send message to topic
http://localhost:8082/topics/topic-01
  • To create a group and a consumer
http://localhost:8082/consumers/consumer-group-01
  • To register a consumer
http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/subscription

To consume some message

http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/records

Accessing the H2 database

If you want to modify the user to access the database, modify the application.properties file. Change the following:

spring.datasource.username=user
spring.datasource.password=password

Access in browser

http://localhost:8080/h2-console

If the JDBC URL is not configured, replace it with:

jdbc:h2:mem:testdb

h2

⚡ Technologies

  • Java
  • JPA
  • Kafka
  • Hibernate
  • Spring Boot
  • H2 Database
  • Design Pattern MVC
  • Design Pattern DTO
  • Lombok

📝 Developed features

  • Consumer creation;
  • Producer creation;
  • Consume message;
  • Produce message;
  • Consult the topics

🧑‍💻 Author

By Ramon Becker 👋🏽 Get in touch!

githublinkedinGmail Badge

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringKafka

ℹ️ Information

Project developed with Spring, Kafka, Zookeeper, Schema-Registry, Rest-Proxy and Docker. Only the backend part was developed. Consumers and producers were created. In v1, only examples of consumers and products were developed. In v2, three applications were developed: consumers, producers and an application that is both producer and consumer. In these applications avro schemes were created for the consumption and sending of messages. A complete service environment was also created via docker-compose. For docker-compose there are two versions, which can be found in v1 and v2. It is recommended to use v2 with landoop.

Some explanations of the technologies that were used:

  • Schema Registry: Provides a service layer for message metadata. It provides a RESTful interface to store and retrieve the Avro schemas that were created and it uses Apache Kafka itself as a storage layer.

  • REST Proxy: Provides a RESTful interface to an Apache Kafka cluster, which facilitates the production and consumption of messages.

  • Apache Zookeeper: Kafka uses Zookeeper to synchronize settings between different clusters.

  • Consumer: Read data from any partition, allowing consumption to be scaled according to message production. They can also be organized into Consumer Groups for a given topic. Using Consumer Groups, each Consumer in the group reads from a single partition, so the group as a whole consumes messages from the entire topic.

  • Producer: They are conceptually simpler than Consumers, as there is no need for group coordination (Consumer Groups). Its main function is to map each message to a topic partition and send a production request to the partition leader.

Example of how Kafka works:

exemplo

⚠️ Prerequisite

Java Badge >= 17

Spring Badge

Kafka

Spring Boot Badge

JSON Badge

h2-logo-2 (1)

JPA-hibernate (1)

Docker

Postman Badge OR Insomnia Badge

🔧 Install

git clone https://github.com/RamonBecker/SpringKafka.git

git clone https://github.com/RamonBecker/SpringKafka.git
or install github https://desktop.github.com/ 

🔨 Docker

Before cloning the project, you will need to install docker on your operating system.

For windows, enter the following from the link:

https://docs.docker.com/desktop/windows/install/

For linux, follow the procedure below:

  • Update your existing list of packages:
sudo apt update
  • Install some prerequisite packages that let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • Add the GPG key to the official Docker repository on your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Add the Docker repository to the APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • Update the package database with Docker packages from the newly added repository:
sudo apt update
  • Make sure you are about to install from the Docker repository instead of the default Ubuntu repository:
apt-cache policy docker-ce
  • Install Docker:
sudo apt install docker-ce
  • Check if it is working:
sudo systemctl status docker

After cloning the project, perform the following Enter the services folder, then enter the v2 folder and run the following command:

docker-compose up 

Access to Landoop

Before accessing the landoop you must run the docker container that is in the service folder in v2 To access landoop, access your browser of choice:

http://localhost:3030/

With landoop you will be able to have an overview of your topics, brokers, messages, as well as verify that the following services are working:

9092 : Kafka Broker
8081 : Schema Registry
8082 : Kafka REST Proxy
2181 : ZooKeeper

landoop

🔨 POSTMAN

To test the end points you will need to install POSTMAN or Insomnia. I recommend installing POSTMAN. I'll leave the collections on the DRIVE to facilitate testing.

Download and import collections into your POSTMAN:

https://drive.google.com/drive/folders/1fJjv9oOSvx3ZhJShdG34Ok3hf_EjV5ZP?usp=sharing

⚙️ Testing the project

To test the project you will need to clone the repository on your machine. You can choose both tools: postman or insomnia.

To download postman go to the following link: https://www.postman.com/downloads/
To download insomnia rentre from the following link: https://insomnia.rest/download

Remembering that you must choose the operating system corresponding to your machine. After you have made your registration in these tools, run them and you must type the following in the address:

Producer endpoints:

localhost:8181/peoples
localhost:8181/cars

Rest-Proxy endpoints:

  • Check broker ID
localhost:8082/v3/clusters/
  • Topic creation
  • To create a topic, the broker ID must be consulted
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Check the topics
  • To verify the topic, the broker ID must be queried
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Send message to topic
http://localhost:8082/topics/topic-01
  • To create a group and a consumer
http://localhost:8082/consumers/consumer-group-01
  • To register a consumer
http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/subscription

To consume some message

http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/records

Accessing the H2 database

If you want to modify the user to access the database, modify the application.properties file. Change the following:

spring.datasource.username=user
spring.datasource.password=password

Access in browser

http://localhost:8080/h2-console

If the JDBC URL is not configured, replace it with:

jdbc:h2:mem:testdb

h2

⚡ Technologies

  • Java
  • JPA
  • Kafka
  • Hibernate
  • Spring Boot
  • H2 Database
  • Design Pattern MVC
  • Design Pattern DTO
  • Lombok

📝 Developed features

  • Consumer creation;
  • Producer creation;
  • Consume message;
  • Produce message;
  • Consult the topics

🧑‍💻 Author

By Ramon Becker 👋🏽 Get in touch!

githublinkedinGmail Badge

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringKafka

ℹ️ Information

Project developed with Spring, Kafka, Zookeeper, Schema-Registry, Rest-Proxy and Docker. Only the backend part was developed. Consumers and producers were created. In v1, only examples of consumers and products were developed. In v2, three applications were developed: consumers, producers and an application that is both producer and consumer. In these applications avro schemes were created for the consumption and sending of messages. A complete service environment was also created via docker-compose. For docker-compose there are two versions, which can be found in v1 and v2. It is recommended to use v2 with landoop.

Some explanations of the technologies that were used:

  • Schema Registry: Provides a service layer for message metadata. It provides a RESTful interface to store and retrieve the Avro schemas that were created and it uses Apache Kafka itself as a storage layer.

  • REST Proxy: Provides a RESTful interface to an Apache Kafka cluster, which facilitates the production and consumption of messages.

  • Apache Zookeeper: Kafka uses Zookeeper to synchronize settings between different clusters.

  • Consumer: Read data from any partition, allowing consumption to be scaled according to message production. They can also be organized into Consumer Groups for a given topic. Using Consumer Groups, each Consumer in the group reads from a single partition, so the group as a whole consumes messages from the entire topic.

  • Producer: They are conceptually simpler than Consumers, as there is no need for group coordination (Consumer Groups). Its main function is to map each message to a topic partition and send a production request to the partition leader.

Example of how Kafka works:

exemplo

⚠️ Prerequisite

Java Badge >= 17

Spring Badge

Kafka

Spring Boot Badge

JSON Badge

h2-logo-2 (1)

JPA-hibernate (1)

Docker

Postman Badge OR Insomnia Badge

🔧 Install

git clone https://github.com/RamonBecker/SpringKafka.git

git clone https://github.com/RamonBecker/SpringKafka.git
or install github https://desktop.github.com/ 

🔨 Docker

Before cloning the project, you will need to install docker on your operating system.

For windows, enter the following from the link:

https://docs.docker.com/desktop/windows/install/

For linux, follow the procedure below:

  • Update your existing list of packages:
sudo apt update
  • Install some prerequisite packages that let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • Add the GPG key to the official Docker repository on your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Add the Docker repository to the APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • Update the package database with Docker packages from the newly added repository:
sudo apt update
  • Make sure you are about to install from the Docker repository instead of the default Ubuntu repository:
apt-cache policy docker-ce
  • Install Docker:
sudo apt install docker-ce
  • Check if it is working:
sudo systemctl status docker

After cloning the project, perform the following Enter the services folder, then enter the v2 folder and run the following command:

docker-compose up 

Access to Landoop

Before accessing the landoop you must run the docker container that is in the service folder in v2 To access landoop, access your browser of choice:

http://localhost:3030/

With landoop you will be able to have an overview of your topics, brokers, messages, as well as verify that the following services are working:

9092 : Kafka Broker
8081 : Schema Registry
8082 : Kafka REST Proxy
2181 : ZooKeeper

landoop

🔨 POSTMAN

To test the end points you will need to install POSTMAN or Insomnia. I recommend installing POSTMAN. I'll leave the collections on the DRIVE to facilitate testing.

Download and import collections into your POSTMAN:

https://drive.google.com/drive/folders/1fJjv9oOSvx3ZhJShdG34Ok3hf_EjV5ZP?usp=sharing

⚙️ Testing the project

To test the project you will need to clone the repository on your machine. You can choose both tools: postman or insomnia.

To download postman go to the following link: https://www.postman.com/downloads/
To download insomnia rentre from the following link: https://insomnia.rest/download

Remembering that you must choose the operating system corresponding to your machine. After you have made your registration in these tools, run them and you must type the following in the address:

Producer endpoints:

localhost:8181/peoples
localhost:8181/cars

Rest-Proxy endpoints:

  • Check broker ID
localhost:8082/v3/clusters/
  • Topic creation
  • To create a topic, the broker ID must be consulted
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Check the topics
  • To verify the topic, the broker ID must be queried
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Send message to topic
http://localhost:8082/topics/topic-01
  • To create a group and a consumer
http://localhost:8082/consumers/consumer-group-01
  • To register a consumer
http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/subscription

To consume some message

http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/records

Accessing the H2 database

If you want to modify the user to access the database, modify the application.properties file. Change the following:

spring.datasource.username=user
spring.datasource.password=password

Access in browser

http://localhost:8080/h2-console

If the JDBC URL is not configured, replace it with:

jdbc:h2:mem:testdb

h2

⚡ Technologies

  • Java
  • JPA
  • Kafka
  • Hibernate
  • Spring Boot
  • H2 Database
  • Design Pattern MVC
  • Design Pattern DTO
  • Lombok

📝 Developed features

  • Consumer creation;
  • Producer creation;
  • Consume message;
  • Produce message;
  • Consult the topics

🧑‍💻 Author

By Ramon Becker 👋🏽 Get in touch!

githublinkedinGmail Badge

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringKafka

ℹ️ Information

Project developed with Spring, Kafka, Zookeeper, Schema-Registry, Rest-Proxy and Docker. Only the backend part was developed. Consumers and producers were created. In v1, only examples of consumers and products were developed. In v2, three applications were developed: consumers, producers and an application that is both producer and consumer. In these applications avro schemes were created for the consumption and sending of messages. A complete service environment was also created via docker-compose. For docker-compose there are two versions, which can be found in v1 and v2. It is recommended to use v2 with landoop.

Some explanations of the technologies that were used:

  • Schema Registry: Provides a service layer for message metadata. It provides a RESTful interface to store and retrieve the Avro schemas that were created and it uses Apache Kafka itself as a storage layer.

  • REST Proxy: Provides a RESTful interface to an Apache Kafka cluster, which facilitates the production and consumption of messages.

  • Apache Zookeeper: Kafka uses Zookeeper to synchronize settings between different clusters.

  • Consumer: Read data from any partition, allowing consumption to be scaled according to message production. They can also be organized into Consumer Groups for a given topic. Using Consumer Groups, each Consumer in the group reads from a single partition, so the group as a whole consumes messages from the entire topic.

  • Producer: They are conceptually simpler than Consumers, as there is no need for group coordination (Consumer Groups). Its main function is to map each message to a topic partition and send a production request to the partition leader.

Example of how Kafka works:

exemplo

⚠️ Prerequisite

Java Badge >= 17

Spring Badge

Kafka

Spring Boot Badge

JSON Badge

h2-logo-2 (1)

JPA-hibernate (1)

Docker

Postman Badge OR Insomnia Badge

🔧 Install

git clone https://github.com/RamonBecker/SpringKafka.git

git clone https://github.com/RamonBecker/SpringKafka.git
or install github https://desktop.github.com/ 

🔨 Docker

Before cloning the project, you will need to install docker on your operating system.

For windows, enter the following from the link:

https://docs.docker.com/desktop/windows/install/

For linux, follow the procedure below:

  • Update your existing list of packages:
sudo apt update
  • Install some prerequisite packages that let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • Add the GPG key to the official Docker repository on your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Add the Docker repository to the APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • Update the package database with Docker packages from the newly added repository:
sudo apt update
  • Make sure you are about to install from the Docker repository instead of the default Ubuntu repository:
apt-cache policy docker-ce
  • Install Docker:
sudo apt install docker-ce
  • Check if it is working:
sudo systemctl status docker

After cloning the project, perform the following Enter the services folder, then enter the v2 folder and run the following command:

docker-compose up 

Access to Landoop

Before accessing the landoop you must run the docker container that is in the service folder in v2 To access landoop, access your browser of choice:

http://localhost:3030/

With landoop you will be able to have an overview of your topics, brokers, messages, as well as verify that the following services are working:

9092 : Kafka Broker
8081 : Schema Registry
8082 : Kafka REST Proxy
2181 : ZooKeeper

landoop

🔨 POSTMAN

To test the end points you will need to install POSTMAN or Insomnia. I recommend installing POSTMAN. I'll leave the collections on the DRIVE to facilitate testing.

Download and import collections into your POSTMAN:

https://drive.google.com/drive/folders/1fJjv9oOSvx3ZhJShdG34Ok3hf_EjV5ZP?usp=sharing

⚙️ Testing the project

To test the project you will need to clone the repository on your machine. You can choose both tools: postman or insomnia.

To download postman go to the following link: https://www.postman.com/downloads/
To download insomnia rentre from the following link: https://insomnia.rest/download

Remembering that you must choose the operating system corresponding to your machine. After you have made your registration in these tools, run them and you must type the following in the address:

Producer endpoints:

localhost:8181/peoples
localhost:8181/cars

Rest-Proxy endpoints:

  • Check broker ID
localhost:8082/v3/clusters/
  • Topic creation
  • To create a topic, the broker ID must be consulted
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Check the topics
  • To verify the topic, the broker ID must be queried
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Send message to topic
http://localhost:8082/topics/topic-01
  • To create a group and a consumer
http://localhost:8082/consumers/consumer-group-01
  • To register a consumer
http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/subscription

To consume some message

http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/records

Accessing the H2 database

If you want to modify the user to access the database, modify the application.properties file. Change the following:

spring.datasource.username=user
spring.datasource.password=password

Access in browser

http://localhost:8080/h2-console

If the JDBC URL is not configured, replace it with:

jdbc:h2:mem:testdb

h2

⚡ Technologies

  • Java
  • JPA
  • Kafka
  • Hibernate
  • Spring Boot
  • H2 Database
  • Design Pattern MVC
  • Design Pattern DTO
  • Lombok

📝 Developed features

  • Consumer creation;
  • Producer creation;
  • Consume message;
  • Produce message;
  • Consult the topics

🧑‍💻 Author

By Ramon Becker 👋🏽 Get in touch!

githublinkedinGmail Badge

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SpringKafka

ℹ️ Information

Project developed with Spring, Kafka, Zookeeper, Schema-Registry, Rest-Proxy and Docker. Only the backend part was developed. Consumers and producers were created. In v1, only examples of consumers and products were developed. In v2, three applications were developed: consumers, producers and an application that is both producer and consumer. In these applications avro schemes were created for the consumption and sending of messages. A complete service environment was also created via docker-compose. For docker-compose there are two versions, which can be found in v1 and v2. It is recommended to use v2 with landoop.

Some explanations of the technologies that were used:

  • Schema Registry: Provides a service layer for message metadata. It provides a RESTful interface to store and retrieve the Avro schemas that were created and it uses Apache Kafka itself as a storage layer.

  • REST Proxy: Provides a RESTful interface to an Apache Kafka cluster, which facilitates the production and consumption of messages.

  • Apache Zookeeper: Kafka uses Zookeeper to synchronize settings between different clusters.

  • Consumer: Read data from any partition, allowing consumption to be scaled according to message production. They can also be organized into Consumer Groups for a given topic. Using Consumer Groups, each Consumer in the group reads from a single partition, so the group as a whole consumes messages from the entire topic.

  • Producer: They are conceptually simpler than Consumers, as there is no need for group coordination (Consumer Groups). Its main function is to map each message to a topic partition and send a production request to the partition leader.

Example of how Kafka works:

exemplo

⚠️ Prerequisite

Java Badge >= 17

Spring Badge

Kafka

Spring Boot Badge

JSON Badge

h2-logo-2 (1)

JPA-hibernate (1)

Docker

Postman Badge OR Insomnia Badge

🔧 Install

git clone https://github.com/RamonBecker/SpringKafka.git

git clone https://github.com/RamonBecker/SpringKafka.git
or install github https://desktop.github.com/ 

🔨 Docker

Before cloning the project, you will need to install docker on your operating system.

For windows, enter the following from the link:

https://docs.docker.com/desktop/windows/install/

For linux, follow the procedure below:

  • Update your existing list of packages:
sudo apt update
  • Install some prerequisite packages that let apt use packages over HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  • Add the GPG key to the official Docker repository on your system:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Add the Docker repository to the APT sources:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  • Update the package database with Docker packages from the newly added repository:
sudo apt update
  • Make sure you are about to install from the Docker repository instead of the default Ubuntu repository:
apt-cache policy docker-ce
  • Install Docker:
sudo apt install docker-ce
  • Check if it is working:
sudo systemctl status docker

After cloning the project, perform the following Enter the services folder, then enter the v2 folder and run the following command:

docker-compose up 

Access to Landoop

Before accessing the landoop you must run the docker container that is in the service folder in v2 To access landoop, access your browser of choice:

http://localhost:3030/

With landoop you will be able to have an overview of your topics, brokers, messages, as well as verify that the following services are working:

9092 : Kafka Broker
8081 : Schema Registry
8082 : Kafka REST Proxy
2181 : ZooKeeper

landoop

🔨 POSTMAN

To test the end points you will need to install POSTMAN or Insomnia. I recommend installing POSTMAN. I'll leave the collections on the DRIVE to facilitate testing.

Download and import collections into your POSTMAN:

https://drive.google.com/drive/folders/1fJjv9oOSvx3ZhJShdG34Ok3hf_EjV5ZP?usp=sharing

⚙️ Testing the project

To test the project you will need to clone the repository on your machine. You can choose both tools: postman or insomnia.

To download postman go to the following link: https://www.postman.com/downloads/
To download insomnia rentre from the following link: https://insomnia.rest/download

Remembering that you must choose the operating system corresponding to your machine. After you have made your registration in these tools, run them and you must type the following in the address:

Producer endpoints:

localhost:8181/peoples
localhost:8181/cars

Rest-Proxy endpoints:

  • Check broker ID
localhost:8082/v3/clusters/
  • Topic creation
  • To create a topic, the broker ID must be consulted
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Check the topics
  • To verify the topic, the broker ID must be queried
http://localhost:8082/v3/clusters/{idBroker}/topics
  • Send message to topic
http://localhost:8082/topics/topic-01
  • To create a group and a consumer
http://localhost:8082/consumers/consumer-group-01
  • To register a consumer
http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/subscription

To consume some message

http://localhost:8082/consumers/consumer-group-01/instances/consumidor1/records

Accessing the H2 database

If you want to modify the user to access the database, modify the application.properties file. Change the following:

spring.datasource.username=user
spring.datasource.password=password

Access in browser

http://localhost:8080/h2-console

If the JDBC URL is not configured, replace it with:

jdbc:h2:mem:testdb

h2

⚡ Technologies

  • Java
  • JPA
  • Kafka
  • Hibernate
  • Spring Boot
  • H2 Database
  • Design Pattern MVC
  • Design Pattern DTO
  • Lombok

📝 Developed features

  • Consumer creation;
  • Producer creation;
  • Consume message;
  • Produce message;
  • Consult the topics

🧑‍💻 Author

By Ramon Becker 👋🏽 Get in touch!

githublinkedinGmail Badge

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages