Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SpringBootWithKafka
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Karisma Choudhury
SpringBootWithKafka
Commits
7443c003
Commit
7443c003
authored
1 year ago
by
Karisma Choudhury
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial Commit
parent
c781aca9
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
879 additions
and
0 deletions
+879
-0
.gitignore
.gitignore
+33
-0
maven-wrapper.jar
.mvn/wrapper/maven-wrapper.jar
+0
-0
maven-wrapper.properties
.mvn/wrapper/maven-wrapper.properties
+2
-0
mvnw
mvnw
+308
-0
mvnw.cmd
mvnw.cmd
+205
-0
pom.xml
pom.xml
+50
-0
SpringbootKafkaTutorialApplication.java
...bootkafkatutorial/SpringbootKafkaTutorialApplication.java
+13
-0
KafkaTopicConfig.java
...afka/springbootkafkatutorial/config/KafkaTopicConfig.java
+27
-0
JsonMessageController.java
...ngbootkafkatutorial/controller/JsonMessageController.java
+28
-0
KafkaController.java
...a/springbootkafkatutorial/controller/KafkaController.java
+25
-0
KafkaConsumer.java
...om/kafka/springbootkafkatutorial/kafka/KafkaConsumer.java
+20
-0
KafkaJsonConsumer.java
...afka/springbootkafkatutorial/kafka/KafkaJsonConsumer.java
+19
-0
KafkaJsonProducer.java
...afka/springbootkafkatutorial/kafka/KafkaJsonProducer.java
+37
-0
KafkaProducer.java
...om/kafka/springbootkafkatutorial/kafka/KafkaProducer.java
+26
-0
User.java
.../java/com/kafka/springbootkafkatutorial/payload/User.java
+43
-0
application.yml
src/main/resources/application.yml
+30
-0
SpringbootKafkaTutorialApplicationTests.java
...afkatutorial/SpringbootKafkaTutorialApplicationTests.java
+13
-0
No files found.
.gitignore
0 → 100644
View file @
7443c003
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
This diff is collapsed.
Click to expand it.
.mvn/wrapper/maven-wrapper.jar
0 → 100644
View file @
7443c003
File added
This diff is collapsed.
Click to expand it.
.mvn/wrapper/maven-wrapper.properties
0 → 100644
View file @
7443c003
distributionUrl
=
https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip
wrapperUrl
=
https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
This diff is collapsed.
Click to expand it.
mvnw
0 → 100644
View file @
7443c003
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Apache Maven Wrapper startup batch script, version 3.2.0
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if
[
-z
"
$MAVEN_SKIP_RC
"
]
;
then
if
[
-f
/usr/local/etc/mavenrc
]
;
then
.
/usr/local/etc/mavenrc
fi
if
[
-f
/etc/mavenrc
]
;
then
.
/etc/mavenrc
fi
if
[
-f
"
$HOME
/.mavenrc"
]
;
then
.
"
$HOME
/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin
=
false
;
darwin
=
false
;
mingw
=
false
case
"
$(
uname
)
"
in
CYGWIN
*
)
cygwin
=
true
;;
MINGW
*
)
mingw
=
true
;;
Darwin
*
)
darwin
=
true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if
[
-z
"
$JAVA_HOME
"
]
;
then
if
[
-x
"/usr/libexec/java_home"
]
;
then
JAVA_HOME
=
"
$(
/usr/libexec/java_home
)
"
;
export
JAVA_HOME
else
JAVA_HOME
=
"/Library/Java/Home"
;
export
JAVA_HOME
fi
fi
;;
esac
if
[
-z
"
$JAVA_HOME
"
]
;
then
if
[
-r
/etc/gentoo-release
]
;
then
JAVA_HOME
=
$(
java-config
--jre-home
)
fi
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if
$cygwin
;
then
[
-n
"
$JAVA_HOME
"
]
&&
JAVA_HOME
=
$(
cygpath
--unix
"
$JAVA_HOME
"
)
[
-n
"
$CLASSPATH
"
]
&&
CLASSPATH
=
$(
cygpath
--path
--unix
"
$CLASSPATH
"
)
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if
$mingw
;
then
[
-n
"
$JAVA_HOME
"
]
&&
[
-d
"
$JAVA_HOME
"
]
&&
JAVA_HOME
=
"
$(
cd
"
$JAVA_HOME
"
||
(
echo
"cannot cd into
$JAVA_HOME
."
;
exit
1
)
; pwd)"
fi
if
[
-z
"
$JAVA_HOME
"
]
;
then
javaExecutable
=
"
$(
which javac
)
"
if
[
-n
"
$javaExecutable
"
]
&&
!
[
"
$(
expr
"
\"
$javaExecutable
\"
"
:
'\([^ ]*\)'
)
"
=
"no"
]
;
then
# readlink(1) is not available as standard on Solaris 10.
readLink
=
$(
which
readlink
)
if
[
!
"
$(
expr
"
$readLink
"
:
'\([^ ]*\)'
)
"
=
"no"
]
;
then
if
$darwin
;
then
javaHome
=
"
$(
dirname
"
\"
$javaExecutable
\"
"
)
"
javaExecutable
=
"
$(
cd
"
\"
$javaHome
\"
"
&&
pwd
-P
)
/javac"
else
javaExecutable
=
"
$(
readlink
-f
"
\"
$javaExecutable
\"
"
)
"
fi
javaHome
=
"
$(
dirname
"
\"
$javaExecutable
\"
"
)
"
javaHome
=
$(
expr
"
$javaHome
"
:
'\(.*\)/bin'
)
JAVA_HOME
=
"
$javaHome
"
export
JAVA_HOME
fi
fi
fi
if
[
-z
"
$JAVACMD
"
]
;
then
if
[
-n
"
$JAVA_HOME
"
]
;
then
if
[
-x
"
$JAVA_HOME
/jre/sh/java"
]
;
then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD
=
"
$JAVA_HOME
/jre/sh/java"
else
JAVACMD
=
"
$JAVA_HOME
/bin/java"
fi
else
JAVACMD
=
"
$(
\u
nset
-f
command
2>/dev/null
;
\c
ommand
-v
java
)
"
fi
fi
if
[
!
-x
"
$JAVACMD
"
]
;
then
echo
"Error: JAVA_HOME is not defined correctly."
>
&2
echo
" We cannot execute
$JAVACMD
"
>
&2
exit
1
fi
if
[
-z
"
$JAVA_HOME
"
]
;
then
echo
"Warning: JAVA_HOME environment variable is not set."
fi
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir
()
{
if
[
-z
"
$1
"
]
then
echo
"Path not specified to find_maven_basedir"
return
1
fi
basedir
=
"
$1
"
wdir
=
"
$1
"
while
[
"
$wdir
"
!=
'/'
]
;
do
if
[
-d
"
$wdir
"
/.mvn
]
;
then
basedir
=
$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if
[
-d
"
${
wdir
}
"
]
;
then
wdir
=
$(
cd
"
$wdir
/.."
||
exit
1
;
pwd
)
fi
# end of workaround
done
printf
'%s'
"
$(
cd
"
$basedir
"
||
exit
1
;
pwd
)
"
}
# concatenates all lines of a file
concat_lines
()
{
if
[
-f
"
$1
"
]
;
then
# Remove \r in case we run on Windows within Git Bash
# and check out the repository with auto CRLF management
# enabled. Otherwise, we may read lines that are delimited with
# \r\n and produce $'-Xarg\r' rather than -Xarg due to word
# splitting rules.
tr
-s
'\r\n'
' '
<
"
$1
"
fi
}
log
()
{
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
printf
'%s\n'
"
$1
"
fi
}
BASE_DIR
=
$(
find_maven_basedir
"
$(
dirname
"
$0
"
)
"
)
if
[
-z
"
$BASE_DIR
"
]
;
then
exit
1
;
fi
MAVEN_PROJECTBASEDIR
=
${
MAVEN_BASEDIR
:-
"
$BASE_DIR
"
}
;
export
MAVEN_PROJECTBASEDIR
log
"
$MAVEN_PROJECTBASEDIR
"
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
wrapperJarPath
=
"
$MAVEN_PROJECTBASEDIR
/.mvn/wrapper/maven-wrapper.jar"
if
[
-r
"
$wrapperJarPath
"
]
;
then
log
"Found
$wrapperJarPath
"
else
log
"Couldn't find
$wrapperJarPath
, downloading it ..."
if
[
-n
"
$MVNW_REPOURL
"
]
;
then
wrapperUrl
=
"
$MVNW_REPOURL
/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
else
wrapperUrl
=
"https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
fi
while
IFS
=
"="
read
-r
key value
;
do
# Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
safeValue
=
$(
echo
"
$value
"
|
tr
-d
'\r'
)
case
"
$key
"
in
(
wrapperUrl
)
wrapperUrl
=
"
$safeValue
"
;
break
;;
esac
done
<
"
$MAVEN_PROJECTBASEDIR
/.mvn/wrapper/maven-wrapper.properties"
log
"Downloading from:
$wrapperUrl
"
if
$cygwin
;
then
wrapperJarPath
=
$(
cygpath
--path
--windows
"
$wrapperJarPath
"
)
fi
if
command
-v
wget
>
/dev/null
;
then
log
"Found wget ... using wget"
[
"
$MVNW_VERBOSE
"
=
true
]
&&
QUIET
=
""
||
QUIET
=
"--quiet"
if
[
-z
"
$MVNW_USERNAME
"
]
||
[
-z
"
$MVNW_PASSWORD
"
]
;
then
wget
$QUIET
"
$wrapperUrl
"
-O
"
$wrapperJarPath
"
||
rm
-f
"
$wrapperJarPath
"
else
wget
$QUIET
--http-user
=
"
$MVNW_USERNAME
"
--http-password
=
"
$MVNW_PASSWORD
"
"
$wrapperUrl
"
-O
"
$wrapperJarPath
"
||
rm
-f
"
$wrapperJarPath
"
fi
elif
command
-v
curl
>
/dev/null
;
then
log
"Found curl ... using curl"
[
"
$MVNW_VERBOSE
"
=
true
]
&&
QUIET
=
""
||
QUIET
=
"--silent"
if
[
-z
"
$MVNW_USERNAME
"
]
||
[
-z
"
$MVNW_PASSWORD
"
]
;
then
curl
$QUIET
-o
"
$wrapperJarPath
"
"
$wrapperUrl
"
-f
-L
||
rm
-f
"
$wrapperJarPath
"
else
curl
$QUIET
--user
"
$MVNW_USERNAME
:
$MVNW_PASSWORD
"
-o
"
$wrapperJarPath
"
"
$wrapperUrl
"
-f
-L
||
rm
-f
"
$wrapperJarPath
"
fi
else
log
"Falling back to using Java to download"
javaSource
=
"
$MAVEN_PROJECTBASEDIR
/.mvn/wrapper/MavenWrapperDownloader.java"
javaClass
=
"
$MAVEN_PROJECTBASEDIR
/.mvn/wrapper/MavenWrapperDownloader.class"
# For Cygwin, switch paths to Windows format before running javac
if
$cygwin
;
then
javaSource
=
$(
cygpath
--path
--windows
"
$javaSource
"
)
javaClass
=
$(
cygpath
--path
--windows
"
$javaClass
"
)
fi
if
[
-e
"
$javaSource
"
]
;
then
if
[
!
-e
"
$javaClass
"
]
;
then
log
" - Compiling MavenWrapperDownloader.java ..."
(
"
$JAVA_HOME
/bin/javac"
"
$javaSource
"
)
fi
if
[
-e
"
$javaClass
"
]
;
then
log
" - Running MavenWrapperDownloader.java ..."
(
"
$JAVA_HOME
/bin/java"
-cp
.mvn/wrapper MavenWrapperDownloader
"
$wrapperUrl
"
"
$wrapperJarPath
"
)
||
rm
-f
"
$wrapperJarPath
"
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
# If specified, validate the SHA-256 sum of the Maven wrapper jar file
wrapperSha256Sum
=
""
while
IFS
=
"="
read
-r
key value
;
do
case
"
$key
"
in
(
wrapperSha256Sum
)
wrapperSha256Sum
=
$value
;
break
;;
esac
done
<
"
$MAVEN_PROJECTBASEDIR
/.mvn/wrapper/maven-wrapper.properties"
if
[
-n
"
$wrapperSha256Sum
"
]
;
then
wrapperSha256Result
=
false
if
command
-v
sha256sum
>
/dev/null
;
then
if
echo
"
$wrapperSha256Sum
$wrapperJarPath
"
|
sha256sum
-c
>
/dev/null 2>&1
;
then
wrapperSha256Result
=
true
fi
elif
command
-v
shasum
>
/dev/null
;
then
if
echo
"
$wrapperSha256Sum
$wrapperJarPath
"
| shasum
-a
256
-c
>
/dev/null 2>&1
;
then
wrapperSha256Result
=
true
fi
else
echo
"Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
echo
"Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
exit
1
fi
if
[
$wrapperSha256Result
=
false
]
;
then
echo
"Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised."
>
&2
echo
"Investigate or delete
$wrapperJarPath
to attempt a clean download."
>
&2
echo
"If you updated your Maven version, you need to update the specified wrapperSha256Sum property."
>
&2
exit
1
fi
fi
MAVEN_OPTS
=
"
$(
concat_lines
"
$MAVEN_PROJECTBASEDIR
/.mvn/jvm.config"
)
$MAVEN_OPTS
"
# For Cygwin, switch paths to Windows format before running java
if
$cygwin
;
then
[
-n
"
$JAVA_HOME
"
]
&&
JAVA_HOME
=
$(
cygpath
--path
--windows
"
$JAVA_HOME
"
)
[
-n
"
$CLASSPATH
"
]
&&
CLASSPATH
=
$(
cygpath
--path
--windows
"
$CLASSPATH
"
)
[
-n
"
$MAVEN_PROJECTBASEDIR
"
]
&&
MAVEN_PROJECTBASEDIR
=
$(
cygpath
--path
--windows
"
$MAVEN_PROJECTBASEDIR
"
)
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS
=
"
$MAVEN_CONFIG
$*
"
export
MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER
=
org.apache.maven.wrapper.MavenWrapperMain
# shellcheck disable=SC2086 # safe args
exec
"
$JAVACMD
"
\
$MAVEN_OPTS
\
$MAVEN_DEBUG_OPTS
\
-classpath
"
$MAVEN_PROJECTBASEDIR
/.mvn/wrapper/maven-wrapper.jar"
\
"-Dmaven.multiModuleProjectDirectory=
${
MAVEN_PROJECTBASEDIR
}
"
\
${
WRAPPER_LAUNCHER
}
$MAVEN_CONFIG
"
$@
"
This diff is collapsed.
Click to expand it.
mvnw.cmd
0 → 100644
View file @
7443c003
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.2.0
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %WRAPPER_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
SET WRAPPER_SHA_256_SUM=""
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
)
IF NOT %WRAPPER_SHA_256_SUM%=="" (
powershell -Command "&{"^
"$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
"If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
" Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
" Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
" Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
" exit 1;"^
"}"^
"}"
if ERRORLEVEL 1 goto error
)
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% ^
%JVM_CONFIG_MAVEN_PROPS% ^
%MAVEN_OPTS% ^
%MAVEN_DEBUG_OPTS% ^
-classpath %WRAPPER_JAR% ^
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
%WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%"=="on" pause
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
cmd /C exit /B %ERROR_CODE%
This diff is collapsed.
Click to expand it.
pom.xml
0 → 100644
View file @
7443c003
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
3.2.2
</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>
com.kafka
</groupId>
<artifactId>
springboot-kafka-tutorial
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<name>
springboot-kafka-tutorial
</name>
<description>
Demo project for Kafka
</description>
<properties>
<java.version>
17
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.kafka
</groupId>
<artifactId>
spring-kafka
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.kafka
</groupId>
<artifactId>
spring-kafka-test
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/SpringbootKafkaTutorialApplication.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
@SpringBootApplication
public
class
SpringbootKafkaTutorialApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
SpringbootKafkaTutorialApplication
.
class
,
args
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/config/KafkaTopicConfig.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
.
config
;
import
org.apache.kafka.clients.admin.NewTopic
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.kafka.config.TopicBuilder
;
@Configuration
public
class
KafkaTopicConfig
{
@Value
(
"${spring.kafka.topic.name}"
)
private
String
topicName
;
@Value
(
"${spring.kafka.topic-json.name}"
)
private
String
jsonTopicName
;
@Bean
public
NewTopic
createTopic
(){
return
TopicBuilder
.
name
(
topicName
).
build
();
}
@Bean
public
NewTopic
createJsonTopic
(){
return
TopicBuilder
.
name
(
jsonTopicName
).
build
();
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/controller/JsonMessageController.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
.
controller
;
import
com.kafka.springbootkafkatutorial.kafka.KafkaJsonProducer
;
import
com.kafka.springbootkafkatutorial.payload.User
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RequestMapping
(
"/api/v1/kafka"
)
public
class
JsonMessageController
{
private
final
KafkaJsonProducer
kafkaJsonProducer
;
public
JsonMessageController
(
KafkaJsonProducer
kafkaJsonProducer
)
{
this
.
kafkaJsonProducer
=
kafkaJsonProducer
;
}
@PostMapping
(
"/publish"
)
public
ResponseEntity
<
String
>
sendMessageToKafka
(
@RequestBody
User
user
){
kafkaJsonProducer
.
sendMessage
(
user
);
return
ResponseEntity
.
ok
(
"Json message sent to kafka topic"
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/controller/KafkaController.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
.
controller
;
import
com.kafka.springbootkafkatutorial.kafka.KafkaProducer
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RequestMapping
(
"/api/v1/kafka"
)
public
class
KafkaController
{
private
KafkaProducer
kafkaProducer
;
public
KafkaController
(
KafkaProducer
kafkaProducer
)
{
this
.
kafkaProducer
=
kafkaProducer
;
}
// http://localhost:8080/api/v1/kafka/publish?message=Hello World
@GetMapping
(
"/publish"
)
public
ResponseEntity
<
String
>
publishMessage
(
@RequestParam
String
message
){
kafkaProducer
.
sendMessage
(
message
);
return
ResponseEntity
.
ok
(
"Message sent to Topic"
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/kafka/KafkaConsumer.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
.
kafka
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.stereotype.Service
;
@Service
public
class
KafkaConsumer
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
KafkaConsumer
.
class
);
@Value
(
"${spring.kafka.topic.name}"
)
private
String
topicName
;
@KafkaListener
(
topics
=
"${spring.kafka.topic.name}"
,
groupId
=
"${spring.kafka.consumer.group_id}"
)
public
void
consumeMessage
(
String
message
){
LOGGER
.
info
(
String
.
format
(
"Reaceived message from the Topic -> %s"
,
message
));
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/kafka/KafkaJsonConsumer.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
.
kafka
;
import
com.kafka.springbootkafkatutorial.payload.User
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.kafka.annotation.KafkaListener
;
import
org.springframework.stereotype.Component
;
@Component
public
class
KafkaJsonConsumer
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
KafkaJsonConsumer
.
class
);
@KafkaListener
(
topics
=
"${spring.kafka.topic-json.name}"
,
groupId
=
"${spring.kafka.consumer.group_id}"
)
public
void
consumeJsonMessage
(
User
userData
){
LOGGER
.
info
(
String
.
format
(
"Json Message consumed -> %s"
,
userData
.
toString
()));
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/kafka/KafkaJsonProducer.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
.
kafka
;
import
com.kafka.springbootkafkatutorial.payload.User
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.kafka.core.KafkaTemplate
;
import
org.springframework.kafka.support.KafkaHeaders
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.support.MessageBuilder
;
import
org.springframework.stereotype.Component
;
@Component
public
class
KafkaJsonProducer
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
KafkaProducer
.
class
);
@Value
(
"${spring.kafka.topic-json.name}"
)
private
String
jsonTopicName
;
private
final
KafkaTemplate
<
String
,
String
>
kafkaTemplate
;
public
KafkaJsonProducer
(
KafkaTemplate
<
String
,
String
>
kafkaTemplate
)
{
this
.
kafkaTemplate
=
kafkaTemplate
;
}
public
void
sendMessage
(
User
userData
){
LOGGER
.
info
(
String
.
format
(
"Message sent ->%s"
,
userData
.
toString
()));
Message
<
User
>
message
=
MessageBuilder
.
withPayload
(
userData
)
.
setHeader
(
KafkaHeaders
.
TOPIC
,
jsonTopicName
)
.
build
();
kafkaTemplate
.
send
(
message
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/kafka/KafkaProducer.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
.
kafka
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.kafka.core.KafkaTemplate
;
import
org.springframework.stereotype.Service
;
@Service
public
class
KafkaProducer
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
KafkaProducer
.
class
);
@Value
(
"${spring.kafka.topic.name}"
)
private
String
topicName
;
private
KafkaTemplate
<
String
,
String
>
kafkaTemplate
;
public
KafkaProducer
(
KafkaTemplate
<
String
,
String
>
kafkaTemplate
)
{
this
.
kafkaTemplate
=
kafkaTemplate
;
}
public
void
sendMessage
(
String
message
){
LOGGER
.
info
(
String
.
format
(
"Message sent %s"
,
message
));
kafkaTemplate
.
send
(
topicName
,
message
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/kafka/springbootkafkatutorial/payload/User.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
.
payload
;
public
class
User
{
private
int
id
;
private
String
firstName
;
private
String
lastName
;
public
int
getId
()
{
return
id
;
}
public
String
getFirstName
()
{
return
firstName
;
}
public
String
getLastName
()
{
return
lastName
;
}
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
}
public
void
setFirstName
(
String
firstName
)
{
this
.
firstName
=
firstName
;
}
public
void
setLastName
(
String
lastName
)
{
this
.
lastName
=
lastName
;
}
@Override
public
String
toString
()
{
return
"User{"
+
"id="
+
id
+
", firstName='"
+
firstName
+
'\''
+
", lastName='"
+
lastName
+
'\''
+
'}'
;
}
}
This diff is collapsed.
Click to expand it.
src/main/resources/application.yml
0 → 100644
View file @
7443c003
spring
:
kafka
:
consumer
:
bootstrap-servers
:
-
localhost:9092
group-id
:
myGroup
auto-offset-reset
:
earliest
key-deserializer
:
org.apache.kafka.common.serialization.StringDeserializer
#value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer
:
org.springframework.kafka.support.serializer.JsonDeserializer
properties
:
spring
:
json
:
trusted
:
packages
:
"
*"
group_id
:
myGroup
producer
:
bootstrap-servers
:
-
localhost:9092
key-serializer
:
org.apache.kafka.common.serialization.StringSerializer
#value-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer
:
org.springframework.kafka.support.serializer.JsonSerializer
topic
:
name
:
ExampleTopic
topic-json
:
name
:
JsonTopic
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/test/java/com/kafka/springbootkafkatutorial/SpringbootKafkaTutorialApplicationTests.java
0 → 100644
View file @
7443c003
package
com
.
kafka
.
springbootkafkatutorial
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
@SpringBootTest
class
SpringbootKafkaTutorialApplicationTests
{
@Test
void
contextLoads
()
{
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment