Java Kafka生产者实现

news/2024/9/17 10:03:20/ 标签: java, kafka, linq

在这里插入图片描述
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
在这里插入图片描述

  • 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~

  • 专栏导航

    • Python系列: Python面试题合集,剑指大厂
    • Git系列: Git操作技巧
    • GO系列: 记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
    • 数据库系列: 详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 运维系列: 总结好用的命令,高效开发
    • 算法与数据结构系列: 总结数据结构和算法,不同类型针对性训练,提升编程思维

    非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

    💖The Start💖点点关注,收藏不迷路💖

    📒文章目录


下面是一个可以连接多个节点的Kafka生产者类,并且在其它文件中调用生产者发送消息的示例代码。代码包含了Kafka连接失败和发送消息失败的异常处理。

首先,确保你已经导入了Kafka的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖:

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

接下来是Kafka生产者类的实现:

java">import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;import java.util.Properties;public class KafkaProducerExample {private KafkaProducer<String, String> producer;public KafkaProducerExample(String bootstrapServers) {Properties props = new Properties();props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());try {producer = new KafkaProducer<>(props);} catch (Exception e) {System.err.println("Failed to create Kafka producer: " + e.getMessage());throw new RuntimeException(e);}}public void sendMessage(String topic, String key, String value) {ProducerRecord<String, String> record = new ProducerRecord<>(topic, key, value);try {producer.send(record, new Callback() {@Overridepublic void onCompletion(RecordMetadata metadata, Exception exception) {if (exception != null) {System.err.println("Failed to send message: " + exception.getMessage());} else {System.out.println("Message sent successfully to topic " + metadata.topic() +" partition " + metadata.partition() + " with offset " + metadata.offset());}}});} catch (Exception e) {System.err.println("Failed to send message: " + e.getMessage());}}public void close() {producer.close();}
}

然后是在其它文件中调用生产者发送消息的示例代码:

java">public class KafkaProducerDemo {public static void main(String[] args) {String bootstrapServers = "localhost:9092,localhost:9093,localhost:9094";KafkaProducerExample producerExample = new KafkaProducerExample(bootstrapServers);try {producerExample.sendMessage("test-topic", "key1", "value1");producerExample.sendMessage("test-topic", "key2", "value2");} catch (Exception e) {System.err.println("Exception occurred while sending messages: " + e.getMessage());} finally {producerExample.close();}}
}

在上面的代码中,我们创建了一个KafkaProducerExample类,该类的构造函数接受一个包含多个节点的Kafka集群地址字符串。sendMessage方法用于发送消息,并处理可能的异常。如果Kafka连接失败,或者消息发送失败,都会打印错误信息。

KafkaProducerDemo类中,我们实例化了KafkaProducerExample,并调用了sendMessage方法发送消息,最后关闭了生产者实例。这样可以确保资源被正确释放。

你可以根据需要修改主题名、消息内容以及Kafka集群的地址。希望这些代码能帮助你实现功能。


🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The End💖点点关注,收藏不迷路💖

http://www.ppmy.cn/news/1522903.html

相关文章

Android 9.0 SystemUI状态栏/快捷设置介绍

Android 9.0 SystemUI状态栏/快捷设置介绍 状态栏 状态栏是SystemUI里的重要功能之一&#xff0c;状态栏的一大功能就是显示功能图标&#xff0c;以告知用户一些最基本的信息状态&#xff0c;在 Android 9.0 版本中&#xff0c;状态栏一般包含运营商信息、时间、日期、电池、通…

python简单计算入门教程|加减法

python通过调用numpy模块&#xff0c;非常擅长数学计算。再通过调用matplotlib模块&#xff0c;可以自由自在地输出numpy计算的结果。 今天&#xff0c;我们就尝试一些基本计算。 下述是正弦函数和余弦函数的加法和减法计算结果。 图1 代码为&#xff1a; import matplotli…

UE4_后期处理_后期处理材质及后期处理体积三—遮挡物体描边显示

一、效果&#xff1a; 在很多游戏中为了玩家能看到墙面背后是否有敌人&#xff0c;会给被遮挡的敌人增加描边显示&#xff0c;效果如下&#xff1a; 参考&#xff1a; https://zhuanlan.zhihu.com/p/81310476 https://zhuanlan.zhihu.com/p/358140547 二、所需知识 知识点…

3.C_数据结构_栈

概述 什么是栈&#xff1a; 栈又称堆栈&#xff0c;是限定在一段进行插入和删除操作的线性表。具有后进先出(LIFO)的特点。 相关名词&#xff1a; 栈顶&#xff1a;允许操作的一端栈底&#xff1a;不允许操作的一端空栈&#xff1a;没有元素的栈 栈的作用&#xff1a; 可…

如何在 Linux 系统中禁用用户登录 ?

管理 Linux 系统上的帐户是系统管理员的一项重要任务。一个常见的任务是禁用帐户&#xff0c;由于各种原因可能需要禁用帐户&#xff0c;例如当员工离开公司或出于安全目的需要临时禁用访问时。 本指南将以简单易懂的步骤引导您完成在 Linux 系统上禁用帐户的过程。 Step 1: …

2024.9.8

打了一上午又一下午的比赛 DABOI Round 1 【MX-X3】梦熊周赛 未来组 3 & RiOI Round 4 第一场还好&#xff0c;共得180pts 难度比较合理&#xff0c;偏向正常noip 然后就发现自己计数问题很难做到推广思路&#xff0c;只会部分分 梦熊的模拟赛就抽象了 题目难度夸大…

IDEA安装教程配置java环境(超详细)

引言 IntelliJ IDEA 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛用于 Java 开发&#xff0c;但也支持多种编程语言&#xff0c;如 Kotlin、Groovy 和 Scala。本文将为你提供一步一步的指南&#xff0c;帮助你在 Windows 系统上顺利安装 Intelli…

Qt:解决player->duration()第一次获取媒体时长为0的问题

前言 最近想做一个白噪声播放器&#xff0c;中间就用到了QMediaplayer这个类&#xff0c;其中遇到两个问题&#xff0c;一个是未初始化好就调用player->state()导致程序异常崩溃的问题(这个问题留到下一个文章去说)&#xff1b;还有一个就是调用player->duration()第一次…

Mendix 创客访谈录|Mendix赋能汽车零部件行业:重塑架构,加速实践与数字化转型

在当前快速发展的技术时代&#xff0c;汽车行业正经历着前所未有的数字化转型。全球领先的汽车零配件制造商面临着如何利用最新的数字技术优化其制造车间管理的挑战。从设备主数据管理到生产执行工单管理&#xff0c;再到实时监控产量及能耗&#xff0c;需要一个灵活、快速且高…

基于单片机智能电源插座设计

本设计基于单片机智能电源插座设计&#xff0c;该系统主要包括&#xff1a;单片机、WIFI模块、显示模块、继电器模块、按键输入模块、功率检测模块及手机APP&#xff0c;实现对用电量的实时监测的功能。功率检测模块实时测量用电器的供电电压、电流、功率&#xff1b;按键输入模…

微信小程序:navigateTo跳转无效

关于 navigateTo 跳转无效问题&#xff0c;在IOS、模拟器上面都能正常跳转&#xff0c;但是在安卓上面不能跳转&#xff0c;过了一段时间IOS也不能跳转了。仔细找了下问题结果是要跳转的页面是tab&#xff0c;不能使用navigateTo 取跳转修改为&#xff1a; wx.switchTab({url:…

经验笔记:跨站脚本攻击(Cross-Site Scripting,简称XSS)

跨站脚本攻击&#xff08;Cross-Site Scripting&#xff0c;简称XSS&#xff09;经验笔记 跨站脚本攻击&#xff08;XSS&#xff1a;Cross-Site Scripting&#xff09;是一种常见的Web应用程序安全漏洞&#xff0c;它允许攻击者将恶意脚本注入到看起来来自可信网站的网页上。当…

Spring Boot集成PDFBox实现电子签章

概述 随着无纸化办公的普及&#xff0c;电子文档的使用越来越广泛。电子签章作为一种有效的身份验证方式&#xff0c;在很多场景下替代了传统的纸质文件签名。Apache PDFBox 是一个开源的Java库&#xff0c;可以用来渲染、生成、填写PDF文档等操作。本文将介绍如何使用Spring …

Socket编程 (连接,发送消息) (Tcp、Udp) - Part1

Socket编程 (连接,发送消息) (Tcp、Udp) 本篇文章主要实现Socket在Tcp\Udp协议下相互通讯的方式。(服务器端与客户端的通讯) 1.基于Tcp协议的Socket通讯类似于B/S架构&#xff0c;面向连接&#xff0c;但不同的是服务器端可以向客户端主动推送消息。 使用Tcp协议通讯需要具备…

HiveServer2 启动时 datanucleus.schema.autoCreateTables 不生效的问题

HiveServer2 启动时出 "Either your MetaData is incorrect, or you need to enable "datanucleus.schema.autoCreateTables"问题 Required table missing : "FUNCS" in Catalog "" Schema "". DataNucleus requires this table…

深入探索Go语言中的指针:内存操作的艺术

首先&#xff0c;尽管指针&#xff08;pointer&#xff09;和switch语句在概念上并无直接联系&#xff0c;但本文将它们并置讨论的原因在于&#xff1a;这两个编程概念在实际学习和应用过程中常被编程人员所忽视。 对于指针的使用&#xff0c;初学者往往因其概念的抽象性和操作…

探索Oracle数据库的多租户特性:架构、优势与实践

在云计算和大数据时代&#xff0c;多租户架构成为数据库设计中的一个重要趋势。Oracle数据库的多租户选项&#xff08;Multitenant&#xff09;允许单个数据库实例支持多个独立数据库&#xff08;称为容器数据库和可插拔数据库&#xff09;&#xff0c;每个数据库都有自己的数据…

Vue3:<Teleport>传送门组件的使用和注意事项

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 Vue3 引入了一个新的内置组件 <Teleport>&#xff0c;它允许你将子组件树渲染到 DOM 中的另一个位置&#xff0c;而不是在父组件的模板中直接渲染。这对于需要跳出当前组件的 DOM 层级结构进行渲染的…

算法:判断一个整数是不是2的阶次方

一、思路 核心&#xff1a;不断除以2&#xff0c;缩小判断的范围 判断整数除以2的余数是否为0&#xff0c;如果不为0&#xff0c;则直接返回false&#xff1b;如果为0&#xff0c;则将将整数除以2后重复本步骤。 注意&#xff1a; 1为2的0次幂。 二、代码 public class Numb…

第十章 【后端】环境准备(10.2)——Maven

10.2 Maven Maven 官网:https://maven.apache.org/ Maven 仓库:https://mvnrepository.com/ 下载 解压 在非系统盘上创建仓库目录 如:E:\maven-repository 修改配置 配置文件为 Maven 目录的 conf\settings.xml,修改为: <?xml version="1.0" encoding=&qu…