Kafka在互联网项目中的地位极高,无论面试还是日常开发,都是刚需。我们来聊聊easy-asyn中是怎么使用kafka的。
1. 下载zookper 并解压(地址:http://archive.apache.org/dist/zookeeper/),进入bin目录,双击zkServer.cmd启动zookper。
2. 下载kafka并解压(地址:https://kafka.apache.org/downloads.html),进入根目录,右键出cmd控制台,执行\bin\windows\kafka-server-start.bat .\config\server.properties命令启动kafka。
3. 使用
3.1 引入easy-asyn(最新版本)
<dependency>
<groupId>io.github.xiaoyudeguang</groupId>
<artifactId>easy-asyn</artifactId>
<version>最新版本</version>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
3.2 在springboot项目的application.properties文件中增加kafka配置:
kafka.consumer.zookeeper.connect=127.0.0.1:2181
kafka.consumer.servers=127.0.0.1:9092
kafka.consumer.enable.auto.commit=true
kafka.consumer.session.timeout=6000
kafka.consumer.auto.commit.interval=100
kafka.consumer.auto.offset.reset=latest
kafka.consumer.topic=test
kafka.consumer.group.id=test
kafka.consumer.concurrency=10
kafka.producer.servers=127.0.0.1:9092
kafka.producer.retries=0
kafka.producer.batch.size=4096
kafka.producer.linger=1
kafka.producer.buffer.memory=40960
3.3 代码和异步消息中间件的门面组件easy-asyn(一):基础篇(JMS和ActiveMQ的使用)一致,直接启动项目。
2019-09-07 22:28:00.263 INFO 13160 --- [ restartedMain] o.a.k.clients.producer.ProducerConfig : ProducerConfig values:
acks = 1
batch.size = 16384
bootstrap.servers = [localhost:9092]
buffer.memory = 33554432
client.id =
compression.type = none
connections.max.idle.ms = 540000
enable.idempotence = false
interceptor.classes = null
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
metric.reporters = []
metrics.num.samples = 2
metrics.recording.level = INFO
metrics.sample.window.ms = 30000
partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner
receive.buffer.bytes = 32768
reconnect.backoff.max.ms = 1000
reconnect.backoff.ms = 50
request.timeout.ms = 30000
retries = 0
retry.backoff.ms = 100
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.mechanism = GSSAPI
security.protocol = PLAINTEXT
send.buffer.bytes = 131072
ssl.cipher.suites = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
ssl.endpoint.identification.algorithm = null
ssl.key.password = null
ssl.keymanager.algorithm = SunX509
ssl.keystore.location = null
ssl.keystore.password = null
ssl.keystore.type = JKS
ssl.protocol = TLS
ssl.provider = null
ssl.secure.random.implementation = null
ssl.trustmanager.algorithm = PKIX
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
2019-09-07 22:28:00.265 INFO 13160 --- [ restartedMain] o.a.kafka.common.utils.AppInfoParser : Kafka version : 1.0.1
2019-09-07 22:28:00.265 INFO 13160 --- [ restartedMain] o.a.kafka.common.utils.AppInfoParser : Kafka commitId : c0518aa65f25317e
2019-09-07 22:28:00.270 INFO 13160 --- [ restartedMain] com.zlyx.test.boot.BootStarter : root
2019-09-07 22:28:00.277 INFO 13160 --- [ test-0-C-1] com.zlyx.test.asyn.AsynMsgListener : MQ异步消息测试@topic
可以看到,没有修改任何一行代码,非常简单。