{"id":217,"date":"2023-05-25T05:52:00","date_gmt":"2023-05-24T21:52:00","guid":{"rendered":"https:\/\/xinchewhd.com.cn\/index.php\/uncategorized\/2d70c5e4e8\/"},"modified":"2023-05-28T10:45:18","modified_gmt":"2023-05-28T02:45:18","slug":"2d70c5e4e8","status":"publish","type":"post","link":"https:\/\/xinchewhd.com.cn\/index.php\/spring-boot\/2d70c5e4e8\/","title":{"rendered":"\u4e00\u8d77\u6765\u5b66kafka\u4e4b\u6574\u5408SpringBoot\u6df1\u5165\u4f7f\u7528(\u4e00)"},"content":{"rendered":"\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<section style=\"font-size: 16px; color: black; padding: 0px 10px; word-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; line-height: 1.25; letter-spacing: 2px; background-image: linear-gradient(90deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%); background-size: 20px 20px; background-position: center center; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, 'PingFang SC', Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;\" data-tool=\"mdnice\u7f16\u8f91\u5668\" data-website=\"https:\/\/www.mdnice.com\">\n<h1 style=\"margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; font-size: 25px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"display: inline-block; font-weight: bold; color: #773098;\">\u4e00\u8d77\u6765\u5b66kafka\u4e4b\u6574\u5408SpringBoot\u6df1\u5165\u4f7f\u7528(\u4e00)<\/span><\/h1>\n<h2 style=\"margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"font-size: 18px; font-weight: bold; display: inline-block; padding-left: 10px; border-left: 5px solid #916dd5;\">\u524d\u8a00<\/span><\/h2>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u76ee\u524d\u6b63\u5728\u51fa\u4e00\u4e2a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka\u4e13\u9898<\/code>\u7cfb\u5217\u6559\u7a0b, \u7bc7\u5e45\u4f1a\u8f83\u591a, \u559c\u6b22\u7684\u8bdd\uff0c\u7ed9\u4e2a\u5173\u6ce8\u2764\ufe0f ~<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u672c\u8282\u7ed9\u5927\u5bb6\u8bb2\u4e00\u4e0b<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka\u6574\u5408SpringBoot<\/code>\u4e2d\u5982\u4f55\u8fdb\u884c\u6d88\u606f\u5e94\u7b54\u4ee5\u53ca<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">@SendTo \u548c @KafkaListener<\/code>\u7684\u8bb2\u89e3~<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u597d\u4e86, \u5e9f\u8bdd\u4e0d\u591a\u8bf4\u76f4\u63a5\u5f00\u6574\u5427~<\/p>\n<blockquote>\n<p data-tool=\"mdnice\u7f16\u8f91\u5668\"><strong>pom\u5f15\u7528<\/strong><\/p>\n<\/blockquote>\n<div><code>&lt;dependency&gt;<\/code><br \/><code>&lt;groupId&gt;org.springframework.kafka&lt;\/groupId&gt;<\/code><br \/><code>&lt;artifactId&gt;spring-kafka&lt;\/artifactId&gt;<\/code><br \/><code>&lt;\/dependency&gt;<\/code><\/div>\n<div>\u00a0<\/div>\n<\/section>\n<section style=\"font-size: 16px; color: black; padding: 0px 10px; word-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; line-height: 1.25; letter-spacing: 2px; background-image: linear-gradient(90deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%); background-size: 20px 20px; background-position: center center; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, 'PingFang SC', Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;\" data-tool=\"mdnice\u7f16\u8f91\u5668\" data-website=\"https:\/\/www.mdnice.com\">\n<blockquote>\n<p data-tool=\"mdnice\u7f16\u8f91\u5668\"><strong>application.yml\u914d\u7f6e<\/strong><\/p>\n<\/blockquote>\n<div><code>kafka:<br \/>bootstrap-servers: kafka\u914d\u7f6e\u5730\u5740<br \/>consumer:<br \/>group-id: atlas.consumer.group<br \/>enable-auto-commit: false<br \/>auto-commit-interval: 100ms<br \/>properties:<br \/>session.timeout.ms: 15000<br \/>max-poll-interval-ms: 15000<br \/>max-partition-fetch-bytes: 15728640<br \/><br \/>key-deserializer: org.apache.kafka.common.serialization.StringDeserializer<br \/>value-deserializer: org.apache.kafka.common.serialization.StringDeserializer<br \/>auto-offset-reset: earliest<br \/>max-poll-records: 50<br \/><br \/>producer:<br \/>retries: 3<br \/>batch-size: 16384<br \/>buffer-memory: 33554432<br \/>key-serializer: org.apache.kafka.common.serialization.StringSerializer<br \/>value-serializer: org.apache.kafka.common.serialization.StringSerializer<br \/>acks: 1<br \/>compression-type: gzip<br \/>listener:<br \/>ack-mode: manual_immediate<br \/>concurrency: 5<br \/>type: batch<br \/># client-id: atlasKafkaCli<\/code><\/div>\n<h2 style=\"margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"font-size: 18px; font-weight: bold; display: inline-block; padding-left: 10px; border-left: 5px solid #916dd5;\">\u6d88\u606f\u5e94\u7b54<\/span><\/h2>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u6709\u65f6\u5019\uff0c\u6d88\u8d39\u8005\u6d88\u8d39\u6d88\u606f\u7684\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u77e5\u9053\u5b83\u6709\u6ca1\u6709\u6d88\u8d39\u5b8c\uff0c\u9700\u8981\u5b83\u7ed9\u6211\u4eec\u4e00\u4e2a\u56de\u5e94\uff0c\u8be5\u600e\u4e48\u505a\u5462? \u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u63d0\u4f9b\u7684<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ReplyingKafkaTemplate<\/code>, \u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u4f8b\u5b50\u6765\u4f53\u9a8c\u4e00\u4e0b,\u65b0\u5efa\u4e00\u4e2a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ReceiveCustomerController<\/code><\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\"><span style=\"color: #61aeee; line-height: 26px;\">@Slf<\/span>4j\n<span style=\"color: #61aeee; line-height: 26px;\">@RestController<\/span>\n<span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">class<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">ReceiveCustomerController<\/span><\/span>{\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">private<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">static<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">final<\/span>\u00a0String\u00a0topic\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"hello3\"<\/span>;\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">private<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">static<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">final<\/span>\u00a0String\u00a0topicCroup\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"hello3Group\"<\/span>;\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Bean<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0ConcurrentMessageListenerContainer&lt;String,\u00a0String&gt;\u00a0<span style=\"color: #61aeee; line-height: 26px;\">repliesContainer<\/span><span style=\"line-height: 26px;\">(ConcurrentKafkaListenerContainerFactory&lt;String,\u00a0String&gt;\u00a0containerFactory)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ConcurrentMessageListenerContainer&lt;String,\u00a0String&gt;\u00a0repliesContainer\u00a0=\u00a0containerFactory.createContainer(topic\u00a0+\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"_replies\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0repliesContainer.getContainerProperties().setGroupId(topicCroup);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0repliesContainer.setAutoStartup(<span style=\"color: #c678dd; line-height: 26px;\">false<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0repliesContainer;\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Bean<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0ReplyingKafkaTemplate&lt;String,\u00a0String,\u00a0String&gt;\u00a0<span style=\"color: #61aeee; line-height: 26px;\">replyingTemplate<\/span><span style=\"line-height: 26px;\">(ProducerFactory&lt;String,\u00a0String&gt;\u00a0producerFactory,\u00a0ConcurrentMessageListenerContainer&lt;String,\u00a0String&gt;\u00a0repliesContainer)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">new<\/span>\u00a0ReplyingKafkaTemplate(producerFactory,\u00a0repliesContainer);\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Bean<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0KafkaTemplate\u00a0<span style=\"color: #61aeee; line-height: 26px;\">kafkaTemplate<\/span><span style=\"line-height: 26px;\">(ProducerFactory&lt;String,\u00a0String&gt;\u00a0producerFactory)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">new<\/span>\u00a0KafkaTemplate(producerFactory);\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Autowired<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">private<\/span>\u00a0ReplyingKafkaTemplate\u00a0kafkaReplyTemplate;\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@GetMapping<\/span>(<span style=\"color: #98c379; line-height: 26px;\">\"\/send\/{msg}\"<\/span>)\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Transactional<\/span>(rollbackFor\u00a0=\u00a0RuntimeException<span style=\"line-height: 26px;\">.<span style=\"color: #c678dd; line-height: 26px;\">class<\/span>)\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">public<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">void<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">sendMsg<\/span>(@<span style=\"color: #e6c07b; line-height: 26px;\">PathVariable<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">String<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">msg<\/span>)\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">throws<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">Exception<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ProducerRecord&lt;String,\u00a0String&gt;\u00a0record\u00a0=\u00a0<span style=\"color: #c678dd; line-height: 26px;\">new<\/span>\u00a0ProducerRecord&lt;&gt;(topic,\u00a0msg);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0RequestReplyFuture&lt;String,\u00a0String,\u00a0String&gt;\u00a0replyFuture\u00a0=\u00a0kafkaReplyTemplate.sendAndReceive(record);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ConsumerRecord&lt;String,\u00a0String&gt;\u00a0consumerRecord\u00a0=\u00a0replyFuture.get();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log.info(<span style=\"color: #98c379; line-height: 26px;\">\"customer\u00a0reply\u00a0&gt;&gt;&gt;&gt;\u00a0{}:\u00a0\"<\/span>,\u00a0consumerRecord.value());\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0customer\u00a0reply\u00a0&gt;&gt;&gt;&gt;listen:\u00a0I\u00a0do\u00a0it\u00a0&gt;&gt;&gt;\u00a01:<\/span>\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@KafkaListener<\/span>(id\u00a0=\u00a0topicCroup,\u00a0topics\u00a0=\u00a0topic)\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@SendTo<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0String\u00a0<span style=\"color: #61aeee; line-height: 26px;\">listen<\/span><span style=\"line-height: 26px;\">(String\u00a0msg)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log.info(<span style=\"color: #98c379; line-height: 26px;\">\"listen\u00a0receive\u00a0msg\u00a0&gt;&gt;&gt;\u00a0\u00a0{}\"<\/span>,\u00a0msg);\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0listen\u00a0receive\u00a0msg\u00a0&gt;&gt;&gt;\u00a0\u00a01<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"listen:\u00a0I\u00a0do\u00a0it\u00a0&gt;&gt;&gt;\u00a0\"<\/span>\u00a0+\u00a0msg;\n\u00a0\u00a0\u00a0\u00a0}\n}\n<\/code><\/pre>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u542f\u52a8\u5e94\u7528\uff0c\u6d4b\u8bd5\u4e00\u4e0b\uff0c\u89c2\u5bdf\u63a7\u5236\u53f0\u7684\u53d8\u5316~<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\">\u00a0\/\/\u00a0listen\u00a0receive\u00a0msg\u00a0&gt;&gt;&gt;\u00a0\u00a01\n\u00a0\/\/\u00a0customer\u00a0reply\u00a0&gt;&gt;&gt;&gt;listen:\u00a0I\u00a0do\u00a0it\u00a0&gt;&gt;&gt;\u00a01:\n<\/code><\/pre>\n<h2 style=\"margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"font-size: 18px; font-weight: bold; display: inline-block; padding-left: 10px; border-left: 5px solid #916dd5;\">@SendTo<\/span><\/h2>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u5728 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Spring Kafka<\/code> \u4e2d\uff0c<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">@SendTo<\/code> \u6ce8\u89e3\u53ef\u4ee5\u7528\u4e8e\u6307\u5b9a\u6d88\u606f\u88ab\u53d1\u9001\u5230\u7684\u76ee\u6807 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Topic<\/code>\u3002\u5f53\u6d88\u8d39\u8005\u6210\u529f\u6d88\u8d39\u4e00\u4e2a\u6d88\u606f\u540e\uff0c\u53ef\u4ee5\u5c06\u7ed3\u679c\u53d1\u9001\u5230\u6307\u5b9a\u7684\u76ee\u6807 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Topic<\/code>\uff0c\u4ee5\u4f9b\u5176\u4ed6\u6d88\u8d39\u8005\u8fdb\u4e00\u6b65\u5904\u7406\u3002<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">@SendTo<\/code> \u6ce8\u89e3\u53ef\u4ee5\u5e94\u7528\u4e8e <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka<\/code> \u6d88\u8d39\u8005\u65b9\u6cd5\u4e0a\uff0c\u4ee5\u6307\u5b9a\u6d88\u606f\u7684\u5904\u7406\u7ed3\u679c\u5c06\u88ab\u53d1\u9001\u5230\u54ea\u4e2a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Topic<\/code>\u3002\u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u4f8b\u5b50\u6765\u6f14\u793a\u4e00\u4e0b\u5982\u4f55\u8fdb\u884c\u6d88\u606f\u7684\u8f6c\u53d1~<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\"><span style=\"color: #61aeee; line-height: 26px;\">@Slf<\/span>4j\n<span style=\"color: #61aeee; line-height: 26px;\">@RestController<\/span>\n<span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">class<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">SendToController<\/span><\/span>{\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Autowired<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">private<\/span>\u00a0KafkaTemplate&lt;Object,\u00a0Object&gt;\u00a0kafkaTemplate;\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u63a5\u6536\u6d88\u606f<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Transactional<\/span>(rollbackFor\u00a0=\u00a0Exception<span style=\"line-height: 26px;\">.<span style=\"color: #c678dd; line-height: 26px;\">class<\/span>)\n\u00a0\u00a0\u00a0\u00a0@<span style=\"color: #e6c07b; line-height: 26px;\">KafkaListener<\/span>(<span style=\"color: #e6c07b; line-height: 26px;\">id<\/span><\/span>=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"input\"<\/span>,\u00a0topics\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"inputTopic\"<\/span>)\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@SendTo<\/span>(<span style=\"color: #98c379; line-height: 26px;\">\"outputTopic\"<\/span>)\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0String\u00a0<span style=\"color: #61aeee; line-height: 26px;\">processMessage<\/span><span style=\"line-height: 26px;\">(String\u00a0message)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u5904\u7406\u6d88\u606f\u5e76\u8fd4\u56de\u7ed3\u679c<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log.info(<span style=\"color: #98c379; line-height: 26px;\">\"inputTopic\u00a0&gt;&gt;&gt;&gt;\u00a0{}\"<\/span>,\u00a0message);\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0inputTopic\u00a0&gt;&gt;&gt;&gt;\u00a01<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"2\"<\/span>;\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@KafkaListener<\/span>(id\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"output\"<\/span>,\u00a0topics\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"outputTopic\"<\/span>)\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0String\u00a0<span style=\"color: #61aeee; line-height: 26px;\">process1Message<\/span><span style=\"line-height: 26px;\">(String\u00a0message)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u5904\u7406\u6d88\u606f\u5e76\u8fd4\u56de\u7ed3\u679c<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String\u00a0result\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"Processed\u00a0message:\u00a0\"<\/span>\u00a0+\u00a0message;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log.info(<span style=\"color: #98c379; line-height: 26px;\">\"outputTopic\u00a0&gt;&gt;&gt;&gt;\u00a0{}\"<\/span>,\u00a0result);\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0outputTopic\u00a0&gt;&gt;&gt;&gt;\u00a0Processed\u00a0message:\u00a02<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0result;\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Transactional<\/span>(rollbackFor\u00a0=\u00a0Exception<span style=\"line-height: 26px;\">.<span style=\"color: #c678dd; line-height: 26px;\">class<\/span>)\n\u00a0\u00a0\u00a0\u00a0@<span style=\"color: #e6c07b; line-height: 26px;\">GetMapping<\/span>(\"\/<span style=\"color: #e6c07b; line-height: 26px;\">hello<\/span>\")\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">public<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">String<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">hello<\/span>()\u00a0<\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u53d1\u9001\u6d88\u606f<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0kafkaTemplate.send(<span style=\"color: #98c379; line-height: 26px;\">\"inputTopic\"<\/span>,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"1\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"hello\"<\/span>;\n\u00a0\u00a0\u00a0\u00a0}\n}\n<\/code><\/pre>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u89c2\u5bdf\u63a7\u5236\u53f0\u7684\u65e5\u5fd7\u4fe1\u606f<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\">inputTopic\u00a0&gt;&gt;&gt;&gt;\u00a01\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\noutputTopic\u00a0&gt;&gt;&gt;&gt;\u00a0Processed\u00a0message:\u00a02\n<\/code><\/pre>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u53ef\u4ee5\u770b\u5230\u6d88\u606f\u88ab\u8f6c\u53d1\u5230<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">outputTopic<\/code>\u5e76\u4e14\u88ab<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">output<\/code>\u6d88\u8d39\u8005\u6210\u529f\u6d88\u8d39<\/p>\n<h2 style=\"margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"font-size: 18px; font-weight: bold; display: inline-block; padding-left: 10px; border-left: 5px solid #916dd5;\">@KafkaListener<\/span><\/h2>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">@KafkaListener<\/code> \u662f\u4e00\u4e2a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u6ce8\u89e3<\/code>\uff0c\u7528\u4e8e\u6807\u8bb0\u4e00\u4e2a\u65b9\u6cd5\u4f5c\u4e3a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka \u6d88\u8d39\u8005<\/code>\u3002\u5728 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Spring Boot<\/code> \u5e94\u7528\u7a0b\u5e8f\u4e2d\uff0c\u4f7f\u7528\u8be5\u6ce8\u89e3\u53ef\u4ee5\u65b9\u4fbf\u5730\u5904\u7406<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka<\/code> \u6d88\u606f\u3002<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">@KafkaListener<\/code> \u6ce8\u89e3\u53ef\u4ee5\u6dfb\u52a0\u5230\u7c7b\u7ea7\u522b\u6216\u65b9\u6cd5\u7ea7\u522b\u3002\u5728\u7c7b\u7ea7\u522b\u6dfb\u52a0\u6ce8\u89e3\uff0c\u5c06\u6307\u5b9a\u9ed8\u8ba4\u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Topic<\/code> \u548c<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u6d88\u8d39\u8005\u7ec4 ID<\/code>\u3002\u5728\u65b9\u6cd5\u7ea7\u522b\u6dfb\u52a0\u6ce8\u89e3\uff0c\u5219\u53ef\u4ee5\u4f7f\u7528\u4e0d\u540c\u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Topic<\/code> \u548c<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u6d88\u8d39\u8005\u7ec4 ID<\/code>\u3002<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u5728\u524d\u9762\u7684\u51e0\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u5e26\u5927\u5bb6\u5df2\u7ecf\u4f53\u9a8c\u8fc7\u4e86\uff0c\u4f46\u90fd\u662f\u76d1\u542c\u4e00\u4e2a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">topic<\/code>\uff0c\u90a3\u4e48\u5982\u4f55\u53bb\u76d1\u542c\u591a\u4e2a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">topic<\/code>\u5462? \u5176\u5b9e\u5f88\u7b80\u5355\uff0c\u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u4f8b\u5b50\u6765\u4f53\u9a8c\u4e0b<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\"><span style=\"color: #61aeee; line-height: 26px;\">@Slf<\/span>4j\n<span style=\"color: #61aeee; line-height: 26px;\">@RestController<\/span>\n<span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">class<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">ListenerController<\/span><\/span>{\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Autowired<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">private<\/span>\u00a0KafkaTemplate&lt;Object,\u00a0Object&gt;\u00a0kafkaTemplate;\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Transactional<\/span>(rollbackFor\u00a0=\u00a0Exception<span style=\"line-height: 26px;\">.<span style=\"color: #c678dd; line-height: 26px;\">class<\/span>)\n\u00a0\u00a0\u00a0\u00a0@<span style=\"color: #e6c07b; line-height: 26px;\">GetMapping<\/span>(\"\/<span style=\"color: #e6c07b; line-height: 26px;\">hello<\/span>\")\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">public<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">String<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">hello<\/span>()\u00a0<\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u53d1\u9001\u6d88\u606f<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0kafkaTemplate.send(<span style=\"color: #98c379; line-height: 26px;\">\"topic1\"<\/span>,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"1\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0kafkaTemplate.send(<span style=\"color: #98c379; line-height: 26px;\">\"topic2\"<\/span>,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"2\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"hello\"<\/span>;\n\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0\u76d1\u542c\u591a\u4e2atopic\n\u00a0\u00a0\u00a0\u00a0\u00a0*\u00a0<span style=\"color: #c678dd; line-height: 26px;\">@param<\/span>\u00a0message\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@KafkaListener<\/span>(topics\u00a0=\u00a0{<span style=\"color: #98c379; line-height: 26px;\">\"topic1\"<\/span>,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"topic2\"<\/span>},\u00a0groupId\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"group1\"<\/span>)\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">void<\/span>\u00a0<span style=\"color: #61aeee; line-height: 26px;\">listen<\/span><span style=\"line-height: 26px;\">(String\u00a0message)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log.info(<span style=\"color: #98c379; line-height: 26px;\">\"Received\u00a0message\u00a0&gt;&gt;&gt;\u00a0{}\"<\/span>,\u00a0message);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0Received\u00a0message\u00a0&gt;&gt;&gt;\u00a01<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0Received\u00a0message\u00a0&gt;&gt;&gt;\u00a02<\/span>\n\u00a0\u00a0\u00a0\u00a0}\n\n}\n\n<\/code><\/pre>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u5982\u4e0a\uff0c\u6211\u4eec\u53d1\u9001\u4e86\u4e24\u6761\u4e0d\u540c\u7684\u6d88\u606f<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">topic1<\/code>\u548c<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">topic2<\/code>\uff0c\u901a\u8fc7\u6307\u5b9a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">topics = {\"topic1\", \"topic2\"}<\/code>\u6210\u529f\u6d88\u8d39\u4e24\u6761\u6d88\u606f<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u4e0b\u9762\u4e00\u8d77\u770b\u4e00\u4e0b\uff0c<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">@KafkaListener<\/code>\u8fd8\u652f\u6301\u54ea\u4e9b\u53c2\u6570?<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">@KafkaListener<\/code> \u6ce8\u89e3\u652f\u6301\u8bb8\u591a\u53c2\u6570\uff0c\u4ee5\u6ee1\u8db3\u4e0d\u540c\u7684\u4f7f\u7528\u573a\u666f\u3002\u4ee5\u4e0b\u662f\u5e38\u7528\u53c2\u6570\u7684\u5217\u8868\uff1a<\/p>\n<ul class=\"list-paddingleft-1\" style=\"margin-top: 8px; margin-bottom: 8px; padding-left: 25px; color: black; font-size: 15px; list-style-type: circle;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">topics<\/code>\uff1a\u6307\u5b9a\u8981\u6d88\u8d39\u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Topic<\/code> \u7684\u540d\u79f0\uff0c\u53ef\u4ee5\u662f\u5b57\u7b26\u4e32\u6216\u5b57\u7b26\u4e32\u6570\u7ec4\u3002\u5fc5\u586b\u53c2\u6570\u3002<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">groupId<\/code>\uff1a\u6307\u5b9a\u6d88\u8d39\u8005\u7ec4 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ID<\/code>\u3002\u6d88\u8d39\u8005\u7ec4\u662f\u4e00\u7ec4\u5171\u4eab\u76f8\u540c <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Topic<\/code> \u7684\u6d88\u8d39\u8005\u7684\u96c6\u5408\u3002\u9ed8\u8ba4\u503c\u4e3a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\"\"<\/code>\uff0c\u8868\u793a\u4f7f\u7528\u9ed8\u8ba4\u7684\u6d88\u8d39\u8005\u7ec4 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ID<\/code>\u3002<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">containerFactory<\/code>\uff1a\u6307\u5b9a\u8981\u4f7f\u7528\u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">KafkaListenerContainerFactory<\/code> \u5b9e\u4f8b\u7684\u540d\u79f0\u3002\u5982\u679c\u6ca1\u6709\u6307\u5b9a\uff0c\u5c06\u4f7f\u7528\u9ed8\u8ba4\u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">KafkaListenerContainerFactory<\/code> \u5b9e\u4f8b\u3002<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">concurrency<\/code>\uff1a\u6307\u5b9a\u8981\u521b\u5efa\u7684\u5e76\u53d1\u6d88\u8d39\u8005\u7684\u6570\u91cf\u3002\u9ed8\u8ba4\u503c\u4e3a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">1<\/code>\u3002<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">autoStartup<\/code>\uff1a\u6307\u5b9a\u5bb9\u5668\u662f\u5426\u5728\u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u542f\u52a8\u3002\u9ed8\u8ba4\u503c\u4e3a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">true<\/code>\u3002<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">id<\/code>\uff1a\u6307\u5b9a\u76d1\u542c\u5668\u7684\u552f\u4e00\u6807\u8bc6\u7b26\u3002\u9ed8\u8ba4\u503c\u4e3a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\"\"<\/code>\u3002<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">errorHandler<\/code>\uff1a\u6307\u5b9a\u5728\u5904\u7406\u6d88\u606f\u65f6\u51fa\u73b0\u5f02\u5e38\u65f6\u8981\u4f7f\u7528\u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ErrorHandler<\/code> \u5b9e\u4f8b\u3002<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">properties<\/code>\uff1a\u6307\u5b9a\u4f20\u9012\u7ed9\u6d88\u8d39\u8005\u5de5\u5382\u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka<\/code> \u6d88\u8d39\u8005\u914d\u7f6e\u5c5e\u6027\u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Map<\/code>\u3002<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\"><code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">partitionOffsets<\/code>: \u662f\u4e00\u4e2a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Map<\/code> \u7c7b\u578b\u7684\u53c2\u6570\uff0c\u8be5\u53c2\u6570\u7528\u4e8e\u6307\u5b9a\u8981\u4ece <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Topic<\/code> \u7684<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u6bcf\u4e2a\u5206\u533a<\/code>\u7684\u54ea\u4e2a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u504f\u79fb\u91cf<\/code>\u5f00\u59cb\u6d88\u8d39\u6d88\u606f<\/section>\n<\/li>\n<\/ul>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u6709\u51e0\u4e2a\u53c2\u6570\u5f88\u597d\u7406\u89e3\uff0c\u6ca1\u5565\u597d\u8bb2\u7684\uff0c\u6211\u4eec\u4e3b\u8981\u770b\u4e00\u4e0b<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">containerFactory<\/code>,<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">errorHandler<\/code>, <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">partitionOffsets<\/code><\/p>\n<h3 style=\"margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 16px; font-weight: bold; text-align: center;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"border-bottom: 2px solid #d89cf6;\">containerFactory<\/span><\/h3>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u524d\u9762\u6211\u4eec\u4f7f\u7528\u7684\u90fd\u662f<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u9ed8\u8ba4<\/code>\u7684<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u6d88\u606f\u76d1\u542c\u5668<\/code>,\u5728 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Spring Kafka<\/code> \u4e2d\uff0c<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka \u6d88\u8d39\u8005<\/code>\u53ef\u4ee5\u4f7f\u7528\u4e0d\u540c\u7684<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u6d88\u606f\u76d1\u542c\u5668\u5bb9\u5668<\/code>\uff0c\u4f8b\u5982 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ConcurrentKafkaListenerContainerFactory<\/code>\u3001<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">KafkaMessageListenerContainer<\/code> \u7b49\u3002\u6bcf\u4e2a\u5bb9\u5668\u90fd\u63d0\u4f9b\u4e86\u4e0d\u540c\u7684\u529f\u80fd\u548c\u914d\u7f6e\u9009\u9879\uff0c\u53ef\u4ee5\u6839\u636e\u5b9e\u9645\u9700\u6c42\u8fdb\u884c\u9009\u62e9\u548c\u914d\u7f6e\u3002 \u5982\u679c\u4f60\u9700\u8981\u81ea\u5b9a\u4e49 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka \u6d88\u8d39\u8005<\/code>\u7684\u914d\u7f6e\u9009\u9879\uff0c\u53ef\u4ee5\u901a\u8fc7\u5728 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Spring Boot<\/code> \u914d\u7f6e\u6587\u4ef6\u4e2d\u8bbe\u7f6e\u5c5e\u6027\u6765\u5b9e\u73b0\u3002\u53e6\u5916\u4e00\u79cd\u65b9\u6cd5\u662f\u901a\u8fc7\u521b\u5efa <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">KafkaListenerContainerFactory bean<\/code> \u5e76\u914d\u7f6e\u5176\u5c5e\u6027\u6765\u5b9e\u73b0\u3002<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u4f8b\u5b50\u6765\u4f53\u9a8c\u4e00\u4e0b<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ConcurrentKafkaListenerContainerFactory<\/code>~<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\"><span style=\"color: #61aeee; line-height: 26px;\">@Configuration<\/span>\n<span style=\"color: #61aeee; line-height: 26px;\">@EnableKafka<\/span>\n<span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">class<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">KafkaConfig<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Bean<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0ConcurrentKafkaListenerContainerFactory&lt;String,\u00a0String&gt;\u00a0<span style=\"color: #61aeee; line-height: 26px;\">kafkaListenerContainerFactory<\/span><span style=\"line-height: 26px;\">()<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ConcurrentKafkaListenerContainerFactory&lt;String,\u00a0String&gt;\u00a0factory\u00a0=\u00a0<span style=\"color: #c678dd; line-height: 26px;\">new<\/span>\u00a0ConcurrentKafkaListenerContainerFactory&lt;&gt;();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0factory.setConsumerFactory(consumerFactory());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0factory.setConcurrency(<span style=\"color: #d19a66; line-height: 26px;\">3<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0factory.getContainerProperties().setPollTimeout(<span style=\"color: #d19a66; line-height: 26px;\">3000<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u4e5f\u53ef\u4ee5\u8bbe\u7f6e\u4e3a\u6279\u91cf\u6d88\u8d39\uff0c\u6bcf\u4e2a\u6279\u6b21\u6570\u91cf\u5728Kafka\u914d\u7f6e\u53c2\u6570\u4e2d\u8bbe\u7f6eConsumerConfig.MAX_POLL_RECORDS_CONFIG<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/factory.setBatchListener(true);<\/span>\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0factory;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Bean<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0ConsumerFactory&lt;String,\u00a0String&gt;\u00a0<span style=\"color: #61aeee; line-height: 26px;\">consumerFactory<\/span><span style=\"line-height: 26px;\">()<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">new<\/span>\u00a0DefaultKafkaConsumerFactory&lt;&gt;(consumerConfigs());\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Bean<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0Map&lt;String,\u00a0Object&gt;\u00a0<span style=\"color: #61aeee; line-height: 26px;\">consumerConfigs<\/span><span style=\"line-height: 26px;\">()<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Map&lt;String,\u00a0Object&gt;\u00a0props\u00a0=\u00a0<span style=\"color: #c678dd; line-height: 26px;\">new<\/span>\u00a0HashMap&lt;&gt;();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"localhost:9092\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0props.put(ConsumerConfig.GROUP_ID_CONFIG,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"my-group\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"earliest\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,\u00a0StringDeserializer<span style=\"line-height: 26px;\">.<span style=\"color: #c678dd; line-height: 26px;\">class<\/span>)<\/span>;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,\u00a0StringDeserializer<span style=\"line-height: 26px;\">.<span style=\"color: #c678dd; line-height: 26px;\">class<\/span>)<\/span>;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0props;\n\u00a0\u00a0\u00a0\u00a0}\n}\n<\/code><\/pre>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u4e2d\uff0c\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ConcurrentKafkaListenerContainerFactory<\/code> \u7684 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">bean<\/code>\uff0c\u5e76\u914d\u7f6e\u4e86\u4e00\u4e9b\u5c5e\u6027\uff0c\u4f8b\u5982\uff1a<\/p>\n<ul class=\"list-paddingleft-1\" style=\"margin-top: 8px; margin-bottom: 8px; padding-left: 25px; color: black; font-size: 15px; list-style-type: circle;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\">\u4f7f\u7528 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">DefaultKafkaConsumerFactory<\/code> \u4f5c\u4e3a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u6d88\u8d39\u8005\u5de5\u5382<\/code>\uff1b<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\">\u8bbe\u7f6e\u5e76\u53d1\u6d88\u8d39\u8005\u6570\u91cf\u4e3a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">3<\/code>\uff1b<\/section>\n<\/li>\n<li>\n<section style=\"margin-top: 5px; margin-bottom: 5px; line-height: 26px; text-align: left; color: #010101; font-size: 14px; font-weight: normal;\">\u8bbe\u7f6e\u8f6e\u8be2\u8d85\u65f6\u65f6\u95f4\u4e3a <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">3000 \u6beb\u79d2<\/code>\u3002<\/section>\n<\/li>\n<\/ul>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u90a3\u4e48\u5982\u4f55\u4f7f\u7528\u5462?\u5f88\u7b80\u5355\uff0c\u53ea\u9700\u4e4b\u6307\u5b9a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">containerFactory<\/code>\u5c31\u597d\u4e86<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\"><span style=\"color: #61aeee; line-height: 26px;\">@Transactional<\/span>(rollbackFor\u00a0=\u00a0Exception<span style=\"line-height: 26px;\">.<span style=\"color: #c678dd; line-height: 26px;\">class<\/span>)\n@<span style=\"color: #e6c07b; line-height: 26px;\">GetMapping<\/span>(\"\/<span style=\"color: #e6c07b; line-height: 26px;\">hello1<\/span>\")\n<span style=\"color: #e6c07b; line-height: 26px;\">public<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">String<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">hello1<\/span>()\u00a0<\/span>{\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u53d1\u9001\u6d88\u606f<\/span>\n\u00a0\u00a0\u00a0\u00a0kafkaTemplate.send(<span style=\"color: #98c379; line-height: 26px;\">\"topic3\"<\/span>,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"3\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"hello1\"<\/span>;\n}\n\n<span style=\"color: #61aeee; line-height: 26px;\">@KafkaListener<\/span>(topics\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"topic3\"<\/span>,\u00a0containerFactory\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"kafkaListenerContainerFactory\"<\/span>)\n<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">void<\/span>\u00a0<span style=\"color: #61aeee; line-height: 26px;\">processMessage<\/span><span style=\"line-height: 26px;\">(String\u00a0message)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u5904\u7406\u6d88\u606f<\/span>\n\u00a0\u00a0\u00a0\u00a0log.info(<span style=\"color: #98c379; line-height: 26px;\">\"hello1\u00a0&gt;&gt;&gt;&gt;&gt;\u00a0{}\"<\/span>,\u00a0message);\n}\n<\/code><\/pre>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">containerFactory <\/code>\u5e94\u7528\u4e8e\u4e0d\u540c\u7684\u6d88\u8d39\u8005\u65b9\u6cd5\u548c\u4e3b\u9898\uff0c\u4ee5\u6ee1\u8db3\u4e0d\u540c\u7684\u9700\u6c42<\/p>\n<h3 style=\"margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 16px; font-weight: bold; text-align: center;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"border-bottom: 2px solid #d89cf6;\">errorHandler<\/span><\/h3>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u5728 \u00b7Spring Kafka\u00b7 \u4e2d\uff0c\u00b7ErrorHandler\u00b7 \u63a5\u53e3\u5b9a\u4e49\u4e86\u5728\u5904\u7406 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">Kafka<\/code> \u6d88\u606f\u65f6\u53d1\u751f\u9519\u8bef\u65f6\u5982\u4f55\u5904\u7406\u5f02\u5e38\u3002\u5982\u679c\u4e0d\u914d\u7f6e <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ErrorHandler<\/code>\uff0c\u5219\u9ed8\u8ba4\u4f7f\u7528 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">LoggingErrorHandler<\/code> \u5c06\u5f02\u5e38\u8bb0\u5f55\u5230\u65e5\u5fd7\u4e2d\u3002<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u5982\u679c\u4f60\u9700\u8981\u81ea\u5b9a\u4e49\u5f02\u5e38\u5904\u7406\u903b\u8f91\uff0c\u53ef\u4ee5\u901a\u8fc7\u5b9e\u73b0 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">ErrorHandler<\/code> \u63a5\u53e3\u5e76\u914d\u7f6e\u5176 <code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">bean<\/code> \u6765\u5b9e\u73b0\u3002<\/p>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u4e0b\u9762\u901a\u8fc7\u4e00\u4e2a\u4f8b\u5b50\u6765\u4f53\u9a8c\u4e00\u4e0b:<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\"><span style=\"color: #61aeee; line-height: 26px;\">@Slf<\/span>4j\n<span style=\"color: #61aeee; line-height: 26px;\">@Component<\/span>\n<span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">class<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">MyErrorHandler<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">implements<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">KafkaListenerErrorHandler<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #61aeee; line-height: 26px;\">@Override<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0Object\u00a0<span style=\"color: #61aeee; line-height: 26px;\">handleError<\/span><span style=\"line-height: 26px;\">(Message&lt;?&gt;\u00a0message,\u00a0ListenerExecutionFailedException\u00a0e)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u5904\u7406\u5f02\u5e38\uff0c\u4f8b\u5982\u6253\u5370\u9519\u8bef\u65e5\u5fd7\u3001\u53d1\u9001\u9519\u8bef\u6d88\u606f\u7b49,\u81ea\u5b9a\u4e49\u903b\u8f91\u5904\u7406<\/span>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0log.error(<span style=\"color: #98c379; line-height: 26px;\">\"Error\u00a0occurred\u00a0while\u00a0processing\u00a0message:\u00a0\u00a0{}\"<\/span>,\u00a0e.getMessage());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">null<\/span>;\n\u00a0\u00a0\u00a0\u00a0}\n}\n<\/code><\/pre>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u4f7f\u7528\u9519\u8bef\u5904\u7406\u5668:<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\"><span style=\"color: #61aeee; line-height: 26px;\">@Transactional<\/span>(rollbackFor\u00a0=\u00a0Exception<span style=\"line-height: 26px;\">.<span style=\"color: #c678dd; line-height: 26px;\">class<\/span>)\n@<span style=\"color: #e6c07b; line-height: 26px;\">GetMapping<\/span>(\"\/<span style=\"color: #e6c07b; line-height: 26px;\">hello2<\/span>\")\n<span style=\"color: #e6c07b; line-height: 26px;\">public<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">String<\/span>\u00a0<span style=\"color: #e6c07b; line-height: 26px;\">hello2<\/span>()\u00a0<\/span>{\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u53d1\u9001\u6d88\u606f<\/span>\n\u00a0\u00a0\u00a0\u00a0kafkaTemplate.send(<span style=\"color: #98c379; line-height: 26px;\">\"topic4\"<\/span>,\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"4\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">return<\/span>\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"hello2\"<\/span>;\n}\n\n<span style=\"color: #61aeee; line-height: 26px;\">@KafkaListener<\/span>(id\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"topic4Group\"<\/span>,\u00a0topics\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"topic4\"<\/span>,\u00a0errorHandler\u00a0=\u00a0<span style=\"color: #98c379; line-height: 26px;\">\"myErrorHandler\"<\/span>)\n<span style=\"line-height: 26px;\"><span style=\"color: #c678dd; line-height: 26px;\">public<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">void<\/span>\u00a0<span style=\"color: #61aeee; line-height: 26px;\">processMessage1<\/span><span style=\"line-height: 26px;\">(String\u00a0message)<\/span><\/span>{\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #5c6370; font-style: italic; line-height: 26px;\">\/\/\u00a0\u5904\u7406\u6d88\u606f<\/span>\n\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">if<\/span>(<span style=\"color: #c678dd; line-height: 26px;\">true<\/span>)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color: #c678dd; line-height: 26px;\">throw<\/span>\u00a0<span style=\"color: #c678dd; line-height: 26px;\">new<\/span>\u00a0RuntimeException(<span style=\"color: #98c379; line-height: 26px;\">\"\u6d88\u606f\u5904\u7406\u5f02\u5e38\"<\/span>);\n\u00a0\u00a0\u00a0\u00a0log.info(<span style=\"color: #98c379; line-height: 26px;\">\"hello2\u00a0&gt;&gt;&gt;&gt;&gt;\u00a0{}\"<\/span>,\u00a0message);\n}\n\n<\/code><\/pre>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u89c2\u5bdf\u63a7\u5236\u53f0\uff1a<\/p>\n<pre style=\"margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><code style=\"overflow-x: auto; padding: 16px; color: #abb2bf; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; padding-top: 15px; background: #282c34; border-radius: 5px;\">Error\u00a0occurred\u00a0<span style=\"color: #c678dd; line-height: 26px;\">while<\/span>\u00a0processing\u00a0message:\u00a0\u00a0Listener\u00a0method\u00a0<span style=\"color: #98c379; line-height: 26px;\">'public\u00a0void\u00a0com.kafka.study.controller.ListenerController.processMessage1(java.lang.String)'<\/span>\u00a0threw\u00a0exception;\u00a0nested\u00a0exception\u00a0is\u00a0java.lang.RuntimeException:\u00a0\u6d88\u606f\u5904\u7406\u5f02\u5e38<br \/><\/code><\/pre>\n<div>\u00a0<\/div>\n<\/section>\n<div>\u00a0<\/div>\n<blockquote>\n<div><strong>\u4e8b\u4f8b\u4ee3\u7801<\/strong><\/div>\n<\/blockquote>\n<div>\u00a0<\/div>\n<blockquote>\n<div><strong>config<\/strong><\/div>\n<\/blockquote>\n<div>\n<div><br \/><code>@Configuration<\/code><br \/><code>@Component<\/code><br \/><code>@EnableKafka<\/code><br \/><code>public class KafkaConfig {<\/code><br \/><br \/><code>@Value(\"${spring.kafka.bootstrap-servers}\")<\/code><br \/><code>private String bootstrapServers;<\/code><br \/><br \/><code>\/\/ @Value(\"${spring.kafka.client-id}\")<\/code><br \/><code>\/\/ private String clientId;<\/code><br \/><code>\/\/<\/code><br \/><code>\/\/ @Value(\"${spring.kafka.consumer.enable-auto-commit}\")<\/code><br \/><code>\/\/ private Boolean autoCommit;<\/code><br \/><code>\/\/<\/code><br \/><code>\/\/ @Value(\"${spring.kafka.consumer.auto-commit-interval}\")<\/code><br \/><code>\/\/ private Integer autoCommitInterval;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.consumer.group-id}\")<\/code><br \/><code>private String groupId;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.consumer.max-poll-records}\")<\/code><br \/><code>private Integer maxPollRecords;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.consumer.auto-offset-reset}\")<\/code><br \/><code>private String autoOffsetReset;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.consumer.key-deserializer}\")<\/code><br \/><code>private String keyDeserializer;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.consumer.value-deserializer}\")<\/code><br \/><code>private String valueDeserializer;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.producer.retries}\")<\/code><br \/><code>private Integer retries;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.producer.key-serializer}\")<\/code><br \/><code>private String keySerializer;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.producer.value-serializer}\")<\/code><br \/><code>private String valueSerializer;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.producer.batch-size}\")<\/code><br \/><code>private Integer batchSize;<\/code><br \/><br \/><code>@Value(\"${spring.kafka.producer.buffer-memory}\")<\/code><br \/><code>private Integer bufferMemory;<\/code><br \/><br \/><code>\/\/ @Value(\"${spring.kafka.producer.compression-type}\")<\/code><br \/><code>\/\/ private String compressionType;<\/code><br \/><br \/><code>\/**<\/code><br \/><code>* \u751f\u4ea7\u914d\u7f6e\u4fe1\u606f<\/code><br \/><code>*<\/code><br \/><code>* @return<\/code><br \/><code>*\/<\/code><br \/><code>@Bean<\/code><br \/><code>public Map&lt;String, Object&gt; producerConfig() {<\/code><br \/><code>Map&lt;String, Object&gt; props = new HashMap&lt;String, Object&gt;();<\/code><br \/><code>props.put(ProducerConfig.ACKS_CONFIG, \"1\");<\/code><br \/><code>props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);<\/code><br \/><code>props.put(ProducerConfig.RETRIES_CONFIG, retries);<\/code><br \/><code>props.put(ProducerConfig.BATCH_SIZE_CONFIG, batchSize);<\/code><br \/><code>props.put(ProducerConfig.LINGER_MS_CONFIG, 1);<\/code><br \/><code>props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, bufferMemory);<\/code><br \/><code>props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, keySerializer);<\/code><br \/><code>props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, valueSerializer);<\/code><br \/><code>return props;<\/code><br \/><code>}<\/code><br \/><br \/><code>\/**<\/code><br \/><code>* \u751f\u4ea7\u8005\u5de5\u5382<\/code><br \/><code>*<\/code><br \/><code>* @return<\/code><br \/><code>*\/<\/code><br \/><code>@Bean<\/code><br \/><code>public ProducerFactory&lt;String, String&gt; producerFactory() {<\/code><br \/><code>return new DefaultKafkaProducerFactory&lt;&gt;(producerConfig());<\/code><br \/><code>}<\/code><br \/><br \/><code>\/**<\/code><br \/><code>* \u751f\u4ea7\u8005\u6a21\u677f<\/code><br \/><code>*<\/code><br \/><code>* @return<\/code><br \/><code>*\/<\/code><br \/><code>@Bean<\/code><br \/><code>public KafkaTemplate&lt;String, String&gt; kafkaTemplate() {<\/code><br \/><code>return new KafkaTemplate&lt;&gt;(producerFactory());<\/code><br \/><code>}<\/code><br \/><br \/><code>\/**<\/code><br \/><code>* \u6d88\u8d39\u8005\u914d\u7f6e\u4fe1\u606f<\/code><br \/><code>*\/<\/code><br \/><code>@Bean<\/code><br \/><code>public Map&lt;String, Object&gt; consumerConfig() {<\/code><br \/><code>Map&lt;String, Object&gt; props = new HashMap&lt;String, Object&gt;();<\/code><br \/><code>props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);<\/code><br \/><code>props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, autoOffsetReset);<\/code><br \/><code>props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);<\/code><br \/><code>props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, maxPollRecords);<\/code><br \/><code>props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, 120000);<\/code><br \/><code>props.put(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, 180000);<\/code><br \/><code>props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, keyDeserializer);<\/code><br \/><code>props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, valueDeserializer);<\/code><br \/><code>return props;<\/code><br \/><code>}<\/code><br \/><br \/><code>\/**<\/code><br \/><code>* \u6d88\u8d39\u8005\u6279\u91cf\u5de5\u7a0b<\/code><br \/><code>*\/<\/code><br \/><code>@Bean<\/code><br \/><code>public KafkaListenerContainerFactory&lt;?&gt; batchFactor() {<\/code><br \/><code>ConcurrentKafkaListenerContainerFactory&lt;Integer, String&gt; factory = new ConcurrentKafkaListenerContainerFactory&lt;Integer, String&gt;();<\/code><br \/><code>factory.setConsumerFactory(new DefaultKafkaConsumerFactory&lt;&gt;(consumerConfig()));<\/code><br \/><code>factory.setBatchListener(true);<\/code><br \/><code>return factory;<\/code><br \/><code>}<\/code><br \/><br \/><code>}<\/code><\/div>\n<\/div>\n<div>\u00a0<\/div>\n<blockquote><strong>\u6d88\u8d39\u8005\u793a\u4f8b\u4ee3\u7801<\/strong><\/blockquote>\n<div>\u00a0<\/div>\n<section style=\"font-size: 16px; color: black; padding: 0px 10px; word-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; line-height: 1.25; letter-spacing: 2px; background-image: linear-gradient(90deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%); background-size: 20px 20px; background-position: center center; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, 'PingFang SC', Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;\" data-tool=\"mdnice\u7f16\u8f91\u5668\" data-website=\"https:\/\/www.mdnice.com\">\n<div><code>public class FlowConsumer {<\/code><br \/><br \/><code>private static Logger log = LoggerFactory.getLogger(FlowConsumer.class);<\/code><br \/><br \/><code>private static final String topicName = AtlasMQConstants.SendDifferentTopic.TOPIC;<\/code><br \/><br \/><code>@Autowired<\/code><br \/><code>private ShopInspectionGradeAbarbeitungService shopInspectionGradeAbarbeitungService;<\/code><br \/><br \/><code>@Autowired<\/code><br \/><code>private BaseWeixinService baseWeixinService;<\/code><br \/><br \/><code>@KafkaListener(topics = {topicName})<\/code><br \/><code>public void receiveMessageFormKafka(List&lt;ConsumerRecord&lt;?, ?&gt;&gt; recordArr, Acknowledgment ack) throws Exception {<\/code><br \/><code>try {<\/code><br \/><code>log.info(\"\u6d88\u8d39\u8005\u7b49\u5f852S\u949f\u6d88\u8d39start\");<\/code><br \/><code>Thread.sleep(2000);<\/code><br \/><code>log.info(\"\u6d88\u8d39\u8005\u7b49\u5f852S\u949f\u6d88\u8d39end\");<\/code><br \/><code>} catch (InterruptedException e) {<\/code><br \/><code>log.error(\"\u6d88\u8d39\u8005\u7b49\u5f85\u6d88\u8d39\u5f02\u5e38:[{}]\", e.getMessage());<\/code><br \/><code>}<\/code><br \/><code>Map&lt;String, BaseWeixin&gt; weiXinApi = baseWeixinService.queryWeiXinApi();<\/code><br \/><code>for (ConsumerRecord&lt;?, ?&gt; record : recordArr) {<\/code><br \/><code>log.info(\"\u76d1\u542c\u6d88\u606f:topic={},partition={},offset={},value={}\", record.topic(), record.partition(), record.offset(), record.value());<\/code><br \/><code>Optional&lt;?&gt; optional = Optional.ofNullable(record.value());<\/code><br \/><code>if (optional.isPresent()) {<\/code><br \/><code>FlowDifferentMessageVi messageVi = JsonUtils.jsonTo(record.value().toString(), FlowDifferentMessageVi.class);<\/code><br \/><code>log.info(\"\u552f\u4e00\u7f16\u7801\uff1aUnique coding={},message={}\", messageVi.getMessageId(), messageVi.toString());<\/code><br \/><code>shopInspectionGradeAbarbeitungService.sendDifferentMessageByCondition(messageVi, weiXinApi);<\/code><br \/><code>}<\/code><br \/><code>ack.acknowledge();<\/code><br \/><code>}<\/code><br \/><code>}<\/code><br \/><br \/><code>}<\/code><\/div>\n<\/section>\n<div>\u00a0<\/div>\n<blockquote>\n<div><strong>\u751f\u4ea7\u8005\u793a\u4f8b\u4ee3\u7801<\/strong><\/div>\n<\/blockquote>\n<div>\u00a0<\/div>\n<div>\n<div><code>public class FlowProducerServer {<\/code><br \/><br \/><code>private static Logger log = LoggerFactory.getLogger(FlowProducerServer.class);<\/code><br \/><br \/><code>private final KafkaConfig kafkaConfig;<\/code><br \/><br \/><code>private final UniqueIDMethodUtils uniqueIDMethodUtils;<\/code><br \/><br \/><code>private final AuthService authService;<\/code><br \/><br \/><code>private final String topicName = AtlasMQConstants.SendDifferentTopic.TOPIC;<\/code><br \/><br \/><code>private final Producer&lt;String, Object&gt; producer;<\/code><br \/><br \/><code>@Autowired<\/code><br \/><code>public FlowProducerServer(KafkaConfig kafkaConfig, UniqueIDMethodUtils uniqueIDMethodUtils, AuthService authService) {<\/code><br \/><code>this.kafkaConfig = kafkaConfig;<\/code><br \/><code>this.uniqueIDMethodUtils = uniqueIDMethodUtils;<\/code><br \/><code>this.authService = authService;<\/code><br \/><code>this.producer = new KafkaProducer&lt;&gt;(kafkaConfig.producerConfig());<\/code><br \/><code>}<\/code><br \/><br \/><code>public Result sendDifferentMessageByCondition(FlowSendDifferentMessVi vi) {<\/code><br \/><code>Auth auth;<\/code><br \/><code>try {<\/code><br \/><code>auth = authService.getAuthCodeVerifyCode(vi.getEncryptAuth());<\/code><br \/><code>} catch (Exception e) {<\/code><br \/><code>throw new BizException(\"\u83b7\u53d6\u6388\u6743\u7801\u9a8c\u8bc1\u5f02\u5e38\uff1a\" + e.getMessage());<\/code><br \/><code>}<\/code><br \/><code>if (StringUtils.checkNull(auth)) {<\/code><br \/><code>throw new BizException(ResultCode.DECRYPT_VERIFY_CODE_ERROR.getMsg());<\/code><br \/><code>}<\/code><br \/><code>if (StringUtils.checkNull(vi.getFlowName()) &amp;&amp; StringUtils.checkNull(vi.getFlowId())) {<\/code><br \/><code>throw new BizException(ResultCode.FLOW_ID_AND_FLOW_NAME_IS_NULL_ERROR);<\/code><br \/><code>}<\/code><br \/><code>FlowDifferentMessageVi messageVi = new FlowDifferentMessageVi();<\/code><br \/><code>messageVi.setMessageId(uniqueIDMethodUtils.generateUniqueID());<\/code><br \/><code>messageVi.setSendNum(0);<\/code><br \/><code>messageVi.setServerFlag(topicName);<\/code><br \/><code>messageVi.setFlowSendDifferentMessVi(vi);<\/code><br \/><code>String toJson = JsonUtils.toJson(messageVi);<\/code><br \/><code>producer.send(new ProducerRecord&lt;String, Object&gt;(topicName, toJson), (recordMetadata, e) -&gt; {<\/code><br \/><code>if (!StringUtils.checkNull(recordMetadata)) {<\/code><br \/><code>log.info(\"\u751f\u4ea7\u6d88\u606f\u552f\u4e00\u6807\u8bc6[{}],\u53d1\u9001\u6b21\u6570[{}],checksum\uff1a[{}],offset:[{}],partition:[{}],topic:[{}]\",<\/code><br \/><code>messageVi.getMessageId(), messageVi.getSendNum(), recordMetadata.checksum(), recordMetadata.offset(), recordMetadata.partition(), recordMetadata.topic());<\/code><br \/><code>}<\/code><br \/><code>if (!StringUtils.checkNull(e)) {<\/code><br \/><code>log.error(\"\u751f\u4ea7\u6d88\u606f\u53d1\u9001\u5931\u8d25\uff0c\u5f02\u5e38\u4fe1\u606f:[{}]\", e.getMessage());<\/code><br \/><code>throw new BizException(\"\u6d88\u606f\u5f02\u5e38\u4fe1\u606f:\" + e.getMessage());<\/code><br \/><code>}<\/code><br \/><code>});<\/code><br \/><code>return Result.ok();<\/code><br \/><code>}<\/code><br \/><br \/><code>@PreDestroy<\/code><br \/><code>public void closeProducer() {<\/code><br \/><code>producer.close();<\/code><br \/><code>}<\/code><br \/><br \/><code>}<\/code><\/div>\n<\/div>\n<section style=\"font-size: 16px; color: black; padding: 0px 10px; word-spacing: 0px; word-break: break-word; overflow-wrap: break-word; text-align: left; line-height: 1.25; letter-spacing: 2px; background-image: linear-gradient(90deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(50, 0, 0, 0.05) 3%, rgba(0, 0, 0, 0) 3%); background-size: 20px 20px; background-position: center center; font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, 'PingFang SC', Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;\" data-tool=\"mdnice\u7f16\u8f91\u5668\" data-website=\"https:\/\/www.mdnice.com\">\n<h2 style=\"margin-top: 30px; margin-bottom: 15px; padding: 0px; font-weight: bold; color: black; font-size: 22px; text-align: left; margin: 20px 10px 0px 0px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\"><span style=\"font-size: 18px; font-weight: bold; display: inline-block; padding-left: 10px; border-left: 5px solid #916dd5;\">\u7ed3\u675f\u8bed<\/span><\/h2>\n<p style=\"padding-top: 8px; padding-bottom: 8px; line-height: 26px; color: black; margin: 10px 0px; letter-spacing: 2px; font-size: 14px; word-spacing: 2px;\" data-tool=\"mdnice\u7f16\u8f91\u5668\">\u672c\u8282\u8fd8\u9057\u7559\u4e00\u4e2a<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">partitionOffsets<\/code>\u8fd9\u4e2a\u6211\u4eec\u653e\u5230\u4e0b\u8282\u7ed9\u5927\u5bb6\u8bb2\uff0c\u6d89\u53ca\u5230<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u5206\u533a partition<\/code>\u548c<code style=\"font-size: 14px; word-wrap: break-word; padding: 2px 4px; border-radius: 4px; margin: 0 2px; background-color: rgba(27,31,35,.05); font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: #916dd5; font-weight: bolder; background: none;\">\u504f\u79fb\u91cf offset<\/code>\u7684\u6982\u5ff5\uff0c\u4e0d\u662f\u5f88\u597d\u7406\u89e3\uff0c\u4e0b\u8282\u7ed9\u5927\u5bb6\u597d\u597d\u7406\u4e00\u4e0b\u8fd9\u4e2a\u6982\u5ff5~<\/p>\n<\/section>\n<p style=\"display: none;\">\u00a0<\/p>\n<\/div><\/div>\n","raw":"","protected":false},"excerpt":{"rendered":"<p>\u4e00\u8d77\u6765\u5b66kafka\u4e4b\u6574\u5408SpringBoot\u6df1\u5165\u4f7f\u7528(\u4e00) \u524d\u8a00 \u76ee\u524d\u6b63\u5728\u51fa\u4e00\u4e2aKafka\u4e13\u9898\u7cfb\u5217\u6559\u7a0b, \u7bc7\u5e45\u4f1a\u8f83\u591a, \u559c\u6b22\u7684\u8bdd\uff0c &#8230;<\/p>\n","protected":false},"author":1,"featured_media":218,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[16,7],"tags":[],"class_list":["post-217","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kafka","category-spring-boot"],"post_thumbnail_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230525135201806-150x150.jpg","content_first_image":null,"post_medium_image_300":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230525135201806-300x128.jpg","post_thumbnail_image_624":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230525135201806-1024x437.jpg","post_frist_image":null,"post_medium_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230525135201806-300x128.jpg","post_large_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230525135201806-1024x437.jpg","post_full_image":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230525135201806.jpg","post_all_images":[],"videoAdId":"","listAd":"0","listAdId":"","listAdEvery":6,"total_comments":0,"category_name":"Kafka","post_date":"2023-05-24","like_count":"0","praiseWord":"\u9f13\u52b1","copyright_state":"","excitationAd":"0","rewardedVideoAdId":"","detailAdId":"","detailAd":"0","enterpriseMinapp":"0","audios":[],"postImageUrl":"https:\/\/wp-moto-1258805347.cos.ap-shanghai.myqcloud.com\/2023\/05\/20230519082947553.jpg","avatarurls":[],"related_posts":null,"pageviews":272,"next_post_id":221,"next_post_title":"\u4e00\u8d77\u6765\u5b66kafka\u4e4b\u6574\u5408SpringBoot\u57fa\u672c\u4f7f\u7528","previous_post_id":373,"previous_post_title":"@Transactional\u4e8b\u52a1\u6ce8\u89e3","_links":{"self":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":0,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/217\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/media\/218"}],"wp:attachment":[{"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/media?parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/categories?post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xinchewhd.com.cn\/index.php\/wp-json\/wp\/v2\/tags?post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}