bad java doing bad things
commit
88aee3ff5c
@ -0,0 +1,30 @@
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/java
|
||||
{
|
||||
"name": "Java",
|
||||
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
||||
"image": "mcr.microsoft.com/devcontainers/java:1-21-bullseye",
|
||||
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/java:1": {
|
||||
"version": "none",
|
||||
"installMaven": "false",
|
||||
"installGradle": "true"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
|
||||
},
|
||||
"mounts": [
|
||||
"source=${localEnv:HOME}${localEnv:USERPROFILE},target=/host-home-folder,type=bind,consistency=cached",
|
||||
]
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
// "postCreateCommand": "java -version",
|
||||
|
||||
// Configure tool-specific properties.
|
||||
// "customizations": {},
|
||||
|
||||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||
// "remoteUser": "root"
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
plugins {
|
||||
id 'org.springframework.boot' version '3.0.4'
|
||||
id 'io.spring.dependency-management' version '1.1.0'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example.kafkaapp'
|
||||
version = '0.0.1-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.kafka:spring-kafka'
|
||||
testImplementation('org.springframework.boot:spring-boot-starter-test') {
|
||||
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
|
||||
}
|
||||
}
|
||||
|
||||
tasks.named('bootRun') {
|
||||
doFirst {
|
||||
systemProperty 'spring.profiles.active', 'dev' // Set active profile if needed
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@
|
||||
com.example.kafkaapp.KafkaApp
|
@ -0,0 +1,20 @@
|
||||
spring:
|
||||
kafka:
|
||||
bootstrap-servers: localhost:9093
|
||||
consumer:
|
||||
group-id: kafka-spring-app-group
|
||||
security:
|
||||
protocol: SSL
|
||||
ssl:
|
||||
trust-store-location: file:/workspaces/java-2/kafka.pfx
|
||||
trust-store-password:
|
||||
trust-store-type: pkcs12
|
||||
key-store-location: file:/workspaces/java-2/kafka.pfx
|
||||
key-store-password:
|
||||
key-store-type: pkcs12
|
||||
key-password:
|
||||
properties:
|
||||
"ssl-endpoint-identification-algorithm": ""
|
||||
producer:
|
||||
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||
value-serializer: org.apache.kafka.common.serialization.StringSerializer
|
@ -0,0 +1,12 @@
|
||||
Manifest-Version: 1.0
|
||||
Main-Class: org.springframework.boot.loader.JarLauncher
|
||||
Start-Class: com.example.kafkaapp.KafkaApp
|
||||
Spring-Boot-Version: 3.0.4
|
||||
Spring-Boot-Classes: BOOT-INF/classes/
|
||||
Spring-Boot-Lib: BOOT-INF/lib/
|
||||
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
|
||||
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
|
||||
Build-Jdk-Spec: 21
|
||||
Implementation-Title: java-2
|
||||
Implementation-Version: 0.0.1-SNAPSHOT
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,2 @@
|
||||
Manifest-Version: 1.0
|
||||
|
Binary file not shown.
@ -0,0 +1,37 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
zookeeper:
|
||||
image: confluentinc/cp-zookeeper:7.9.0
|
||||
container_name: zookeeper
|
||||
environment:
|
||||
ZOOKEEPER_CLIENT_PORT: 2181
|
||||
ZOOKEEPER_TICK_TIME: 2000
|
||||
ports:
|
||||
- "2181:2181"
|
||||
|
||||
kafka:
|
||||
image: confluentinc/cp-kafka:7.9.0
|
||||
container_name: kafka
|
||||
volumes:
|
||||
- /workspaces/java-2/creds:/etc/kafka/secrets/
|
||||
depends_on:
|
||||
- zookeeper
|
||||
environment:
|
||||
KAFKA_BROKER_ID: 1
|
||||
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
|
||||
KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://kafka:9092,SSL://localhost:9093'
|
||||
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'PLAINTEXT:PLAINTEXT,SSL:SSL'
|
||||
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
|
||||
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
|
||||
KAFKA_SSL_KEYSTORE_FILENAME: kafka.pfx
|
||||
KAFKA_SSL_KEYSTORE_TYPE: PKCS12
|
||||
KAFKA_SSL_CLIENT_AUTH: required
|
||||
KAFKA_SSL_KEYSTORE_CREDENTIALS: empty
|
||||
KAFKA_SSL_KEY_CREDENTIALS: empty
|
||||
KAFKA_SSL_TRUSTSTORE_FILENAME: kafka.pfx
|
||||
KAFKA_SSL_TRUSTSTORE_CREDENTIALS: empty
|
||||
KAFKA_SSL_TRUSTSTORE_TYPE: PKCS12
|
||||
ports:
|
||||
- "9092:9092"
|
||||
- "9093:9093"
|
@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDCTCCAfECFFGG94CeZ54LSnygfaCx3x+vJz7zMA0GCSqGSIb3DQEBCwUAMEEx
|
||||
CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJPSDEPMA0GA1UECgwGd2FnbmVyMRQwEgYD
|
||||
VQQDDAtkdW1iLmluaG9tZTAeFw0yNTA1MDIyMzExMzZaFw0yNjA1MDIyMzExMzZa
|
||||
MEExCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJPSDEPMA0GA1UECgwGd2FnbmVyMRQw
|
||||
EgYDVQQDDAtkdW1iLmluaG9tZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBANgutIbPUieGFISCk7KghvC/nHbXhB23XIrpjKGv40opA7TEguSk1gSnyTyd
|
||||
m3HooEIjXLME59PerJbXCMlN60JbWjrHIPyTB2sjs0rmM/RZJDsqsLWU6xKnpnGE
|
||||
ReN9fCXdFuwP2duK7L2mwTrOV/u7gmdDfhN9wi1AisisrmwtZyUGoWIkNgq2plkr
|
||||
enDnvZuo7zJITswJQUcgQ3MVPOHkfHQLk69cZZzxcLKnF9j7HNtaqrYW9OnNz4Zl
|
||||
+P6bSAQAUPvhB20k+ESmErwiji7xmr6c9Pm+tBIz3zyjNBpl/50Fnh33Zs/YLzSD
|
||||
TntI7Cp5iBZsG/NIFi5cVxTkCT0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAygsP
|
||||
HfjEwUrS6AuO7/u9rLY/RNn9m+F+KWTpOI+AFmkBcRS6qekv9/XZqvqTXtXtDdPV
|
||||
eb+NbIQ3LmN9cxYxxg0IbX5GMsYV1OpjOipHt+PDiYmvePFKt7sM1z1BKGlf3EWX
|
||||
vd4zGj4zfzDJ6Qe/XvHYr44jiMuM9nAoh0diTr+3zalCyDGp3hJhn3stLW/cJT9F
|
||||
vJ3gknpu4k0k2JJwaXfhnp3u1jjZbJZSCERKZQKtJjnN0Vowm4LTnnZc2aEpnw5V
|
||||
I5O6F+NeKLjG3XfbhS4cvTWmkecjK5sWvREHZLlUoUeinTu3aSW7RO2XLbeCyUGH
|
||||
TYXPkvj/UGrRb1EJTg==
|
||||
-----END CERTIFICATE-----
|
@ -0,0 +1,16 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIChjCCAW4CAQAwQTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk9IMQ8wDQYDVQQK
|
||||
DAZ3YWduZXIxFDASBgNVBAMMC2R1bWIuaW5ob21lMIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEA2C60hs9SJ4YUhIKTsqCG8L+cdteEHbdciumMoa/jSikD
|
||||
tMSC5KTWBKfJPJ2bceigQiNcswTn096sltcIyU3rQltaOscg/JMHayOzSuYz9Fkk
|
||||
OyqwtZTrEqemcYRF4318Jd0W7A/Z24rsvabBOs5X+7uCZ0N+E33CLUCKyKyubC1n
|
||||
JQahYiQ2CramWSt6cOe9m6jvMkhOzAlBRyBDcxU84eR8dAuTr1xlnPFwsqcX2Psc
|
||||
21qqthb06c3PhmX4/ptIBABQ++EHbST4RKYSvCKOLvGavpz0+b60EjPfPKM0GmX/
|
||||
nQWeHfdmz9gvNINOe0jsKnmIFmwb80gWLlxXFOQJPQIDAQABoAAwDQYJKoZIhvcN
|
||||
AQELBQADggEBAL4riwxhbEomTAMpjhgiRptjRg99L3vHTEk837Rr7+tGjLV38uuu
|
||||
Zh3HIoGlArqmNABemVJMyMj4t3C0WHOVgp2sRPiUpSDL95yyjo9fluNy3l/jjxYH
|
||||
xbT7f7RGXlQFjX3sWK6rs4p8t2zBCzMAySa6gD7OxTruVrrDh0x2Oq5lHMN+3h1D
|
||||
EeccTvjDEuhBs5xqq0zvpkxFNgfVx7Pj/WEiXP0U/KkB9LvfwO/ytRupuIXuSqS5
|
||||
D7GEidKvGGZwGQWj/exsCb/RQFL/fiXOH7/GystgR8fCL9L4EzKPEZBR3GKjdrTE
|
||||
XGhB18ed75BH5TSSgQETFIxvK5xJu1/e3RA=
|
||||
-----END CERTIFICATE REQUEST-----
|
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLrSGz1InhhSE
|
||||
gpOyoIbwv5x214Qdt1yK6Yyhr+NKKQO0xILkpNYEp8k8nZtx6KBCI1yzBOfT3qyW
|
||||
1wjJTetCW1o6xyD8kwdrI7NK5jP0WSQ7KrC1lOsSp6ZxhEXjfXwl3RbsD9nbiuy9
|
||||
psE6zlf7u4JnQ34TfcItQIrIrK5sLWclBqFiJDYKtqZZK3pw572bqO8ySE7MCUFH
|
||||
IENzFTzh5Hx0C5OvXGWc8XCypxfY+xzbWqq2FvTpzc+GZfj+m0gEAFD74QdtJPhE
|
||||
phK8Io4u8Zq+nPT5vrQSM988ozQaZf+dBZ4d92bP2C80g057SOwqeYgWbBvzSBYu
|
||||
XFcU5Ak9AgMBAAECggEBAJHzhmH1mouglD2aQsk4Y6IqWyJJAqNlZg9K+m026Ibr
|
||||
BduHSK/BMdTWyqAn8AiJe5jrcuxSBYofLfpwlzgBaTHVpydDxVuAkGOfKK8KmE0B
|
||||
2dowSjltnv9rPI4rNVwPHkAZ8h3R3c3BD3BDIvXm1bPYtoOtJ3NVVkFi78/n9aKG
|
||||
DwzkU0vUgrpcrYz7oHz3mS2r1yAf/6jH1VH3mnWz7mP5Vqr6w/bARYPOvXs9WsLu
|
||||
jpMYTnDQJpidGrU/DzQjsCUpV9CYE2NF7/cGZR04KTHUnxYEvy2623AIVQakOVjO
|
||||
Jx9c7oENmCpOM2Np/+rUNQGYiEKdiw9U3MsjOqPXZYECgYEA7kwwFRkp0bunNA2z
|
||||
97AQFCdrtQvoNCgWOUQZ31CXbqlOemtXNwIFkKuUU1zSj6/GS7S6Sd8Gb8cgOpEW
|
||||
LFVxA/+MsI6Qc00Re4KONsFVqFF8+hMSxaMcN5pvujiviSfLRwB7KtYMjPbQ4g4X
|
||||
w1aVNn59KOb053jr9Ukzf+csk7ECgYEA6D3xf0/0+RqWFVR5b0lLhze8kZjh0t5R
|
||||
3EuS8Crg7YvMpUkF7NzlupIO2RL50NdIaSKbI5W0TxF2DakIWnbzUl93PjILmZo7
|
||||
BUN5U58Tcq5Ecw/7mn1Cvz4m9ePVTcRDQ0z8PDwOTKyLf3RQAb+HugkVItIqF+Ea
|
||||
6+Kl+lO9rU0CgYBpuA1A3vgJnznvwwCLq2WGu3JyUMUElqA9abQcubFlG+HAN+zq
|
||||
b5AufaCBV1Xm/zF3Fsfqy/IcFvh6YzG2G3XXM0GkdqspLBDMfcBAFIe+8+ABRgL3
|
||||
AYUcOfzFXi6qJ6hsaI88EthglYNYNq5eMARkt7spMUWHh8MPABnD7bh+EQKBgHXg
|
||||
euMTwlNtmx/YcIp7uUo4kA2We4h8LzCRa1NbcC8h9g0us0M2G6RG3iJv7zyBCM/U
|
||||
MMovAgXf5vuoAAVqurXknrGC1UBxd+OEC+DVrRlYOoXsZthTG73V3hCQQ4PlSf6u
|
||||
5JfuI5PnQCbA8prwjANw+Llj0tmr9+4ia/xS5MNBAoGAdXNaV5I1LKkdB1+AW2ee
|
||||
CZmNwjIn4XvkxkI82wrGDORR+zV0qGxQUk6Wb1+PlxWKDKkzxKc7xRlDN49mja5A
|
||||
47E7+hygLjsI9cx/3NWlKEY1T+8+GGlWRPfNBWMPIEicNN+FcYbf50qKQgCXHyI+
|
||||
Jaj+xs7C37PIQDTeuoUKCaI=
|
||||
-----END PRIVATE KEY-----
|
@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDOTCCAiECFE2uzPsjMIajh6lguqCd81S/8fb3MA0GCSqGSIb3DQEBCwUAMFkx
|
||||
CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
|
||||
cm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0yNTA1
|
||||
MDMxOTAwMzNaFw0zNTA1MDExOTAwMzNaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQI
|
||||
DApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQx
|
||||
EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBAMcUzfbIhdbJiRCt3hYGvLf1ppTbPsczCYuePXL6cwkTTG2IyRnx9LdQ3xBl
|
||||
3Hk80VQwzfPSMjfyYHULBDoUXc3vPuPK4SGTCn254OVN+hF4Rjls70N1UZZbBhHi
|
||||
kXLGi087Tn+cAlu+TNM7z6kFXrFrt9sSzZ/9sFR731pg+Vgwj4v2bsom1muhkrWp
|
||||
w5AdbC7feowOpGT8S7rzMOTHqpQUiz6+02SFw+6EfkqWfInjWvQ7H7AG4/g2jFU4
|
||||
uE1EdWr2LiGIbMhOYnIAWw8WfdRINbryQhtWV0d5uaFVKaJV21zLe7NjZsyk7oNv
|
||||
S1RSe9EeThMtFBhq1zp2XZmJVxsCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAcYZh
|
||||
8OCoemFGpCKLpRY0WYLi6s6XObDU8w9d6Esd3gIjD+feQSMgfmiESs3bURCjDZOa
|
||||
catvfvpMAQVuDTdEAAJ4PXcwlWLAYYIGML4l2y+pmfiK5w4s27Rqe54gemS+CZFy
|
||||
pa6iCZJ7sLX+wOOClks5Ho9JD628NpPeIDrqe7oBe1f51eApLfyl69Xv2VJTMs7p
|
||||
NNyC+gRYHJklECSWfdDlEhzfACzlqjIENNmN80LqYuoKN78uqV42oOIpYBRN8oQq
|
||||
Puza1WzlEzJEa8yMTffyneXp5r0/Jm+o+AwlMKNTnytoZIYjwj5RM1e1w361BsI4
|
||||
9YPEnHnyvMfid/NiuA==
|
||||
-----END CERTIFICATE-----
|
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHFM32yIXWyYkQ
|
||||
rd4WBry39aaU2z7HMwmLnj1y+nMJE0xtiMkZ8fS3UN8QZdx5PNFUMM3z0jI38mB1
|
||||
CwQ6FF3N7z7jyuEhkwp9ueDlTfoReEY5bO9DdVGWWwYR4pFyxotPO05/nAJbvkzT
|
||||
O8+pBV6xa7fbEs2f/bBUe99aYPlYMI+L9m7KJtZroZK1qcOQHWwu33qMDqRk/Eu6
|
||||
8zDkx6qUFIs+vtNkhcPuhH5KlnyJ41r0Ox+wBuP4NoxVOLhNRHVq9i4hiGzITmJy
|
||||
AFsPFn3USDW68kIbVldHebmhVSmiVdtcy3uzY2bMpO6Db0tUUnvRHk4TLRQYatc6
|
||||
dl2ZiVcbAgMBAAECggEAPIapu+7pKg0p2+VQkRfJRpCr7bPemUd+DnG0swFL+iVg
|
||||
5ihhI785LIas2tptNnr0FYmlBA0S8YmCI/OOfG32uwaS80SaP8/pr6HUq0KS1b7g
|
||||
ctMYx0Si4niYFtXwbJnKfvNEAW4YFXZ8+vfDQdr9GCnswvErjQnfE0B5/otfI51O
|
||||
PkpcWC6z8eG3HF1cMIdiZIYOd8Ro0tIkrVTaP3jmFc+Aui81D73343yuAti2pQBn
|
||||
NlyAdV6bryv+TJaRHvGoKlTJkNo+3AYcsxadnLD0K62BE9+J1bgRXtoOa7RjjAd3
|
||||
L2ZzLq49HvGm7Ju3Hwg9U6n2jg+97iNN+MPFqq6JoQKBgQD0yUYTkJ5xoBBdmonD
|
||||
bEsowqdGzzhY88H302VOMMF2vjeQOKUe8iJN56f4No4QiYpvFDcsXR8VEr20Aw61
|
||||
GoUOPGtcgNGQGsYj0ZIT0dOQafu/84nLmZDaM9ZvyUukIw9G5vDtnf8xKvFlA9OP
|
||||
Fy9s1XuN9V5rczXcEQLHwUgQqwKBgQDQM4bV8Y6CASK53Xx5gVlF51M1hptDN2yf
|
||||
Oi/a6b2XGqumRLXfEJ0NJCkraiuvD0a9C+VIwMhD5Q1dKeZOavLOpfrEMXbecovs
|
||||
Oo2yKG1hK1IxiZMfZJgvS3vASBAb/tHGPGa/M1KB24itYU3aZZDHAjkfbIY1Ppku
|
||||
wmL+Jz4zUQKBgG8fW9+P3E2qoyNK/1UmuSvkybk8YtEGvzw4zBllyr2T9ndTL6pP
|
||||
s0D4c+kbIvzg42YvoChUkcKoQlQQu0F9q39d8EMK+5dWgDJMdernawp5Al8OOLSj
|
||||
nv1fYO5YTC1T+SBvwFmuSuXQH8uCpCymEtJuS2uTQuy2XXHsiv2RgZyHAoGAf9bz
|
||||
txBgkaEC4p+GG9F5sHuO0zH4yfgRQV/oHIIjgNHGjgxopDQ+SuBmSxshAZfetpvE
|
||||
SLze+xl88DSXDpWKy6qM5MT+mS46jm2RrdA3AVApYvN3m/IXpAq0TOeyxI3d3twd
|
||||
ts9bnRLgxJ0Xwb9Ve2z5CDuJ2M28H0MKp8YO4lECgYEA5WTxR5P2YX2UpuNcPJ3j
|
||||
Zy3dJ7kpRN5+n4T+vRzAxXafZOFlr31tgiVnSGpP31Xvr0g2sRwjgNv8ANulXFZ5
|
||||
emqnZvDc+fBDIaxMymxNUfyMVdCzGsCYiE4ULJrFM5XdSJeqPmG/fUK0T4NaHlv6
|
||||
8kGpfsGw26qSkogbfJ7uz7c=
|
||||
-----END PRIVATE KEY-----
|
@ -0,0 +1,17 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIICnjCCAYYCAQAwWTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
|
||||
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDESMBAGA1UEAwwJbG9j
|
||||
YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxxTN9siF1smJ
|
||||
EK3eFga8t/WmlNs+xzMJi549cvpzCRNMbYjJGfH0t1DfEGXceTzRVDDN89IyN/Jg
|
||||
dQsEOhRdze8+48rhIZMKfbng5U36EXhGOWzvQ3VRllsGEeKRcsaLTztOf5wCW75M
|
||||
0zvPqQVesWu32xLNn/2wVHvfWmD5WDCPi/ZuyibWa6GStanDkB1sLt96jA6kZPxL
|
||||
uvMw5MeqlBSLPr7TZIXD7oR+SpZ8ieNa9DsfsAbj+DaMVTi4TUR1avYuIYhsyE5i
|
||||
cgBbDxZ91Eg1uvJCG1ZXR3m5oVUpolXbXMt7s2NmzKTug29LVFJ70R5OEy0UGGrX
|
||||
OnZdmYlXGwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAJSjDAs5JNWrpGT7bnYV
|
||||
XWFUmQw0E/uivd8CYnwVf7VK18bGwL770wMGc/9vLm7jep26aWMVmFUwr2FJcGdx
|
||||
kM3QGrt9tgsmHOYpVt+Xy27GX2px4GpTD7XU039lZNEWpyqSXq2k2xMifQk2ze6d
|
||||
ntELmI2O6hetezpB4TawxPGut4hzr2VdstEwe8wT4AaBCM4i5om/XdrcOw4IKjlz
|
||||
MbL9MfEZJRVjh3Vg/lgfbZHzTNZVCzuWNZbA2ybHyUlfz6C2pWQh6d6R9jRvnHQG
|
||||
cD1e1WxOJFsom27hA9vwPJnLwTT61uB4nOjJxs4IZYnfKMkbX7BRUnyARg6+kEM6
|
||||
BHY=
|
||||
-----END CERTIFICATE REQUEST-----
|
@ -0,0 +1,19 @@
|
||||
package com.example.kafkaapp;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import com.example.kafkaapp.service.ProducerService;
|
||||
|
||||
@SpringBootApplication
|
||||
public class KafkaApp {
|
||||
public static void main(String[] args) throws InterruptedException{
|
||||
//SpringApplication.run(KafkaApp.class, args);
|
||||
ApplicationContext context = SpringApplication.run(KafkaApp.class, args);
|
||||
ProducerService producerService = context.getBean(ProducerService.class);
|
||||
System.out.println("Waiting 10 seconds before sending the message...");
|
||||
Thread.sleep(10_000);
|
||||
System.out.println("ok, sending");
|
||||
producerService.sendMessage("test-topic-0", "Hello from main()!");
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package com.example.kafkaapp.service;
|
||||
|
||||
import org.apache.kafka.clients.consumer.ConsumerRecord;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.kafka.annotation.KafkaListener;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class KafkaConsumer {
|
||||
|
||||
@KafkaListener(topics = "test-topic-0", groupId = "group_id")
|
||||
public void listen(ConsumerRecord<String, String> record) {
|
||||
System.out.println("Received message: " + record.value());
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.example.kafkaapp.service;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.kafka.core.KafkaTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.kafka.core.ProducerFactory;
|
||||
import org.apache.kafka.clients.producer.ProducerConfig;
|
||||
import org.apache.kafka.common.config.SslConfigs;
|
||||
import org.apache.kafka.common.serialization.StringSerializer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
|
||||
import org.springframework.kafka.core.KafkaTemplate;
|
||||
import org.springframework.kafka.core.ProducerFactory;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class ProducerService {
|
||||
|
||||
@Autowired
|
||||
private KafkaTemplate<String, String> kafkaTemplate;
|
||||
|
||||
public void sendMessage(String topic, String message) {
|
||||
kafkaTemplate.send(topic, message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
class KafkaProducerConfig {
|
||||
|
||||
@Bean
|
||||
public ProducerFactory<String, String> producerFactory() {
|
||||
Map<String, Object> props = new HashMap<>();
|
||||
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9093");
|
||||
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
|
||||
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
|
||||
props.put("security.protocol", "SSL");
|
||||
props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, "/workspaces/java-2/kafka.pfx");
|
||||
props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, "");
|
||||
props.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, "/workspaces/java-2/kafka.pfx");
|
||||
props.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, "");
|
||||
props.put(SslConfigs.SSL_KEYSTORE_TYPE_CONFIG, "PKCS12");
|
||||
props.put(SslConfigs.SSL_KEY_PASSWORD_CONFIG, "");
|
||||
|
||||
// ✅ Disable hostname verification (the "single extra property")
|
||||
props.put(SslConfigs.SSL_ENDPOINT_IDENTIFICATION_ALGORITHM_CONFIG, "");
|
||||
props.put("ssl.endpoint.identification.algorithm", "");
|
||||
|
||||
return new DefaultKafkaProducerFactory<>(props);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public KafkaTemplate<String, String> kafkaTemplate() {
|
||||
return new KafkaTemplate<>(producerFactory());
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
spring:
|
||||
kafka:
|
||||
bootstrap-servers: localhost:9093
|
||||
consumer:
|
||||
group-id: kafka-spring-app-group
|
||||
security:
|
||||
protocol: SSL
|
||||
ssl:
|
||||
trust-store-location: file:/workspaces/java-2/kafka.pfx
|
||||
trust-store-password:
|
||||
trust-store-type: pkcs12
|
||||
key-store-location: file:/workspaces/java-2/kafka.pfx
|
||||
key-store-password:
|
||||
key-store-type: pkcs12
|
||||
key-password:
|
||||
properties:
|
||||
"ssl-endpoint-identification-algorithm": ""
|
||||
producer:
|
||||
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
||||
value-serializer: org.apache.kafka.common.serialization.StringSerializer
|
Loading…
Reference in New Issue