一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
背景
在实际的项目中,我们经常会遇到各种网络域的隔离,通常各个网络域之间的通信,我们会通过nginx做代理,进行转发。那kafka的消息可以通过nginx转发吗,答案是肯定的。今天分享给大家详细的过程。美好的一天,从分享开始,加油!
准备
- kafka,版本2.13-3.0.0
- nginx,版本1.9.9
环境搭建
安装kafka
首先需要安装kafka,已安装好的可以忽略,没安装好的,可以参考我前面的文章,链接如下: juejin.cn/post/707589…
安装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】,更多干活与你分享。