docker 一键部署最新版kafka
·
docker run -d --name kafka \
-p 9092:9092 -p 9093:9093 \
-e TZ=Asia/Shanghai \
-e LANG=C.UTF-8 \
-e KAFKA_NODE_ID=1 \
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
-e CLUSTER_ID=kafka-cluster \
-e KAFKA_PROCESS_ROLES=broker,controller \
-e KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT \
-e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER \
-e KAFKA_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
-e KAFKA_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 \
bitnami/kafka:latest
确保本机(windows或linux) 安装了docker
直接执行以上命令即可使用最新的 KRaft 模式启动最新版本kafka到本机, 无需依赖zookeeper (如果是windows且不适用wsl的话 powershell或者cmd会识别空格和换行导致执行失败 自行删除换行即可)
这也是官方以后推荐的做法, 本身一个中间件强依赖另一个中间件就是一件很不符合直觉的事情
部署完成后可进行个人学习和练习 下面提供spring boot的缺省配置和生产/消费demo效果图
<!-- mavel引入kafka依赖-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
spring:
#配置kafka链接
kafka:
bootstrap-servers: localhost:9092
package com.fb.controller;
import cn.hutool.core.util.IdUtil;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@RequestMapping("/kafka")
public class KafKaTest {
@Resource
private KafkaTemplate<String, String> kafkaTemplate;
@GetMapping(value = "/send",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public void send() {
String s = IdUtil.fastSimpleUUID();
log.info("发送kafka消息:{}", s);
kafkaTemplate.send("test-topic",s);
}
@KafkaListener(topics = "test-topic",groupId = "test-group1")
public void consume1(String message) {
log.info("收到kafka消息1:{}",message);
}
@KafkaListener(topics = "test-topic",groupId = "test-group2")
public void consume2(String message) {
log.info("收到kafka消息2:{}",message);
}
@KafkaListener(topics = "test-topic",groupId = "test-group3")
public void consume3(String message) {
log.info("收到kafka消息3:{}",message);
}
}
11:30:03.234 INFO 46496 - [http-nio-9999-exec-1] com.fb.controller.KafKaTest : 发送kafka消息:dfc79987f33a49ca92db2cf75d9203a0
11:30:03.243 INFO 46496 - [http-nio-9999-exec-1] o.a.k.clients.producer.ProducerConfig : ProducerConfig values:
acks = -1
auto.include.jmx.reporter = true
batch.size = 16384
bootstrap.servers = [localhost:9092]
buffer.memory = 33554432
client.dns.lookup = use_all_dns_ips
client.id = fateBeauty-producer-1
compression.type = none
connections.max.idle.ms = 540000
delivery.timeout.ms = 120000
enable.idempotence = true
enable.metrics.push = true
interceptor.classes = []
key.serializer = class org.apache.kafka.common.serialization.StringSerializer
linger.ms = 0
max.block.ms = 60000
max.in.flight.requests.per.connection = 5
max.request.size = 1048576
metadata.max.age.ms = 300000
metadata.max.idle.ms = 300000
metric.reporters = []
metrics.num.samples = 2
metrics.recording.level = INFO
metrics.sample.window.ms = 30000
partitioner.adaptive.partitioning.enable = true
partitioner.availability.timeout.ms = 0
partitioner.class = null
partitioner.ignore.keys = false
receive.buffer.bytes = 32768
reconnect.backoff.max.ms = 1000
reconnect.backoff.ms = 50
request.timeout.ms = 30000
retries = 2147483647
retry.backoff.max.ms = 1000
retry.backoff.ms = 100
sasl.client.callback.handler.class = null
sasl.jaas.config = null
sasl.kerberos.kinit.cmd = /usr/bin/kinit
sasl.kerberos.min.time.before.relogin = 60000
sasl.kerberos.service.name = null
sasl.kerberos.ticket.renew.jitter = 0.05
sasl.kerberos.ticket.renew.window.factor = 0.8
sasl.login.callback.handler.class = null
sasl.login.class = null
sasl.login.connect.timeout.ms = null
sasl.login.read.timeout.ms = null
sasl.login.refresh.buffer.seconds = 300
sasl.login.refresh.min.period.seconds = 60
sasl.login.refresh.window.factor = 0.8
sasl.login.refresh.window.jitter = 0.05
sasl.login.retry.backoff.max.ms = 10000
sasl.login.retry.backoff.ms = 100
sasl.mechanism = GSSAPI
sasl.oauthbearer.clock.skew.seconds = 30
sasl.oauthbearer.expected.audience = null
sasl.oauthbearer.expected.issuer = null
sasl.oauthbearer.jwks.endpoint.refresh.ms = 3600000
sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms = 10000
sasl.oauthbearer.jwks.endpoint.retry.backoff.ms = 100
sasl.oauthbearer.jwks.endpoint.url = null
sasl.oauthbearer.scope.claim.name = scope
sasl.oauthbearer.sub.claim.name = sub
sasl.oauthbearer.token.endpoint.url = null
security.protocol = PLAINTEXT
security.providers = null
send.buffer.bytes = 131072
socket.connection.setup.timeout.max.ms = 30000
socket.connection.setup.timeout.ms = 10000
ssl.cipher.suites = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.3]
ssl.endpoint.identification.algorithm = https
ssl.engine.factory.class = null
ssl.key.password = null
ssl.keymanager.algorithm = SunX509
ssl.keystore.certificate.chain = null
ssl.keystore.key = null
ssl.keystore.location = null
ssl.keystore.password = null
ssl.keystore.type = JKS
ssl.protocol = TLSv1.3
ssl.provider = null
ssl.secure.random.implementation = null
ssl.trustmanager.algorithm = PKIX
ssl.truststore.certificates = null
ssl.truststore.location = null
ssl.truststore.password = null
ssl.truststore.type = JKS
transaction.timeout.ms = 60000
transactional.id = null
value.serializer = class org.apache.kafka.common.serialization.StringSerializer
11:30:03.244 INFO 46496 - [http-nio-9999-exec-1] o.a.k.c.t.i.KafkaMetricsCollector : initializing Kafka metrics collector
11:30:03.254 INFO 46496 - [http-nio-9999-exec-1] o.a.k.clients.producer.KafkaProducer : [Producer clientId=fateBeauty-producer-1] Instantiated an idempotent producer.
11:30:03.264 INFO 46496 - [http-nio-9999-exec-1] o.a.kafka.common.utils.AppInfoParser : Kafka version: 3.7.0
11:30:03.265 INFO 46496 - [http-nio-9999-exec-1] o.a.kafka.common.utils.AppInfoParser : Kafka commitId: 2ae524ed625438c5
11:30:03.265 INFO 46496 - [http-nio-9999-exec-1] o.a.kafka.common.utils.AppInfoParser : Kafka startTimeMs: 1740108603264
11:30:03.271 INFO 46496 - [ateBeauty-producer-1] org.apache.kafka.clients.Metadata : [Producer clientId=fateBeauty-producer-1] Cluster ID: Je4q077YRoyIi6441UgTbQ
11:30:03.271 INFO 46496 - [ateBeauty-producer-1] o.a.k.c.p.internals.TransactionManager : [Producer clientId=fateBeauty-producer-1] ProducerId set to 1008 with epoch 0
11:30:03.313 INFO 46496 - [intContainer#4-0-C-1] com.fb.controller.UserController : 收到kafka消息3:dfc79987f33a49ca92db2cf75d9203a0
11:30:03.313 INFO 46496 - [intContainer#2-0-C-1] com.fb.controller.KafKaTest : 收到kafka消息1:dfc79987f33a49ca92db2cf75d9203a0
11:30:03.313 INFO 46496 - [intContainer#3-0-C-1] com.fb.controller.UserController : 收到kafka消息2:dfc79987f33a49ca92db2cf75d9203a0
更多推荐
所有评论(0)