网站首页 > 技术文章 正文
背景
在实际的项目中,我们经常会遇到各种网络域的隔离,通常各个网络域之间的通信,我们会通过nginx做代理,进行转发。那kafka的消息可以通过nginx转发吗,答案是肯定的。今天分享给大家详细的过程。美好的一天,从分享开始,加油!
准备
- kafka,版本2.13-3.0.0
- nginx,版本1.9.9
环境搭建
安装kafka
首先需要安装kafka,已安装好的可以忽略,没安装好的,可以参考我前面的文章,链接如下: https://juejin.cn/post/7075897456373792775
安装nginx
安装nginx-kafka插件
安装git
如果已安装可以忽略(也可以从本地上传)
gityum install -y git
找一个目录,将librdkafka依赖包克隆下来,这里我使用的目录是 /usr/local/src,在这个目录下执行
git clone https://github.com/edenhill/librdkafka
进入librdkafka进行编译
先安装依赖相关依赖
yum install -y gcc gcc-c++ pcre-devel zlib-devel
编译librdkafka插件,依次执行下列命令
cd librdkafka
./configure
make
make install
nginx集成librdkafka插件
#解压
tar -zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9/
#安装依赖
yum -y install gcc pcre-devel openssl openssl-devel
#预编译时将插件同时编译,后面跟的目录是 克隆的nginx整合kafka的插件的目录
./configure --add-module=/usr/local/src/ngx_kafka_module/
#编译
make
make install
修改nginx配置
安装后在/usr/local/下会有一个nginx目录(此处使用的是nginx默认安装目录,也可以预编译的时设置自定义目录) 在nginx的conf目录下的nginx.conf配置文件添加内容如下:
此时所有的安装配置就已经全部完成了。
启动nginx时可能出现的问题
如果在启动过程中,报错error while loading shared libraries: librdkafka.so.1: cannot open shared object file: No such file or directory 解决方法为: 执行下列命令
echo “/usr/local/lib” >> /etc/ld.so.conf
ldconfig
测试
测试前检查工作
- 确定kafka安装完成并启动
- 确定kafka创建了名字叫test的topic
- 确定nginx启动
- 如果是云服务器需要确定9092端口已经开放
发送消息
curl http://ip:端口/kafka/test -d "测试"
需要源码的可以关注公众号【温故知新之java】,更多干货与你分享。
猜你喜欢
- 2024-12-12 Kafka监控与指标解析-UnderReplicatedPartitions
- 2024-12-12 聊聊 Kafka: Consumer 源码解析之 ConsumerNetworkClient
- 2024-12-12 为什么Kafka依赖ZooKeeper?
- 2024-12-12 一款Kafka可视化Web界面管理工具:CMAK
- 2024-12-12 MongoDB 数据同步kafka
- 2024-12-12 kafka快速入门到精通
- 2024-12-12 SpringBoot集成Kafka+Kafka优化问题
- 2024-12-12 kafka consumer 配置详解
- 2024-12-12 kafka生产者配置详解
- 2024-12-12 Kafka两种集群详解和搭建教程
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)