电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java實現Kafka生產者和消費者的示例

瀏覽:125日期:2022-08-17 10:04:38
Kafka簡介

Kafka是由Apache軟件基金會開發的一個開源流處理平臺,由Scala和Java編寫。Kafka的目標是為處理實時數據提供一個統一、高吞吐、低延遲的平臺。

Java實現Kafka生產者和消費者的示例

方式一:kafka-clients

引入依賴

在pom.xml文件中,引入kafka-clients依賴:

<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.3.1</version></dependency>

生產者

創建一個KafkaProducer的生產者實例:

@Configurationpublic class Config { public final static String bootstrapServers = '127.0.0.1:9092'; @Bean(destroyMethod = 'close') public KafkaProducer<String, String> kafkaProducer() { Properties props = new Properties(); //設置Kafka服務器地址 props.put('bootstrap.servers', bootstrapServers); //設置數據key的序列化處理類 props.put('key.serializer', StringSerializer.class.getName()); //設置數據value的序列化處理類 props.put('value.serializer', StringSerializer.class.getName()); KafkaProducer<String, String> producer = new KafkaProducer<>(props); return producer; }}

在Controller中進行使用:

@RestController@Slf4jpublic class Controller { @Autowired private KafkaProducer<String, String> kafkaProducer; @RequestMapping('/kafkaClientsSend') public String send() { String uuid = UUID.randomUUID().toString(); RecordMetadata recordMetadata = null; try { //將消息發送到Kafka服務器的名稱為“one-more-topic”的Topic中 recordMetadata = kafkaProducer.send(new ProducerRecord<>('one-more-topic', uuid)).get(); log.info('recordMetadata: {}', recordMetadata); log.info('uuid: {}', uuid); } catch (Exception e) { log.error('send fail, uuid: {}', uuid, e); } return uuid; }}

消費者

創建一個KafkaConsumer的消費者實例:

@Configurationpublic class Config { public final static String groupId = 'kafka-clients-group'; public final static String bootstrapServers = '127.0.0.1:9092'; @Bean(destroyMethod = 'close') public KafkaConsumer<String, String> kafkaConsumer() { Properties props = new Properties(); //設置Kafka服務器地址 props.put('bootstrap.servers', bootstrapServers); //設置消費組 props.put('group.id', groupId); //設置數據key的反序列化處理類 props.put('key.deserializer', StringDeserializer.class.getName()); //設置數據value的反序列化處理類 props.put('value.deserializer', StringDeserializer.class.getName()); props.put('enable.auto.commit', 'true'); props.put('auto.commit.interval.ms', '1000'); props.put('session.timeout.ms', '30000'); KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(props); //訂閱名稱為“one-more-topic”的Topic的消息 kafkaConsumer.subscribe(Arrays.asList('one-more-topic')); return kafkaConsumer; }}

在Controller中進行使用:

@RestController@Slf4jpublic class Controller { @Autowired private KafkaConsumer<String, String> kafkaConsumer; @RequestMapping('/receive') public List<String> receive() { 從Kafka服務器中的名稱為“one-more-topic”的Topic中消費消息 ConsumerRecords<String, String> records = kafkaConsumer.poll(Duration.ofSeconds(1)); List<String> messages = new ArrayList<>(records.count()); for (ConsumerRecord<String, String> record : records.records('one-more-topic')) { String message = record.value(); log.info('message: {}', message); messages.add(message); } return messages; }}方式二:spring-kafka

使用kafka-clients需要我們自己創建生產者或者消費者的bean,如果我們的項目基于SpringBoot構建,那么使用spring-kafka就方便多了。

引入依賴

在pom.xml文件中,引入spring-kafka依賴:

<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.3.12.RELEASE</version></dependency>

生產者

在application.yml文件中增加配置:

spring: kafka: #Kafka服務器地址 bootstrap-servers: 127.0.0.1:9092 producer: #設置數據value的序列化處理類 value-serializer: org.apache.kafka.common.serialization.StringSerializer

在Controller中注入KafkaTemplate就可以直接使用了,代碼如下:

@RestController@Slf4jpublic class Controller { @Autowired private KafkaTemplate<String, String> template; @RequestMapping('/springKafkaSend') public String send() { String uuid = UUID.randomUUID().toString(); //將消息發送到Kafka服務器的名稱為“one-more-topic”的Topic中 this.template.send('one-more-topic', uuid); log.info('uuid: {}', uuid); return uuid; }}

消費者

在application.yml文件中增加配置:

spring: kafka: #Kafka服務器地址 bootstrap-servers: 127.0.0.1:9092 consumer: #設置數據value的反序列化處理類 value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

創建一個可以被Spring框架掃描到的類,并且在方法上加上@KafkaListener注解,就可以消費消息了,代碼如下:

@Component@Slf4jpublic class Receiver { @KafkaListener(topics = 'one-more-topic', groupId = 'spring-kafka-group') public void listen(ConsumerRecord<?, ?> record) { Optional<?> kafkaMessage = Optional.ofNullable(record.value()); if (kafkaMessage.isPresent()) { String message = (String) kafkaMessage.get(); log.info('message: {}', message); } }}

到此這篇關于Java實現Kafka生產者和消費者的示例的文章就介紹到這了,更多相關Java Kafka生產者和消費者 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 北京成考网-北京成人高考网 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 鄂泉泵业官网|(杭州、上海、全国畅销)大流量防汛排涝泵-LW立式排污泵 | 滚塑PE壳体-PE塑料浮球-警示PE浮筒-宁波君益塑业有限公司 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | 深圳诚暄fpc首页-柔性线路板,fpc柔性线路板打样生产厂家 | 高压分散机(高压细胞破碎仪)百科-北京天恩瀚拓 | 溶氧传感器-pH传感器|哈美顿(hamilton) | hdpe土工膜-防渗膜-复合土工膜-长丝土工布价格-厂家直销「恒阳新材料」-山东恒阳新材料有限公司 ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 不锈钢/气体/液体玻璃转子流量计(防腐,选型,规格)-常州天晟热工仪表有限公司【官网】 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 杭州高温泵_热水泵_高温油泵|昆山奥兰克泵业制造有限公司 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 章丘丰源机械有限公司 - 三叶罗茨风机,罗茨鼓风机,罗茨风机 | 液压油缸-液压缸厂家价格,液压站系统-山东国立液压制造有限公司 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 广州物流公司_广州货运公司_广州回程车运输 - 万信物流 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 |