ngx_kafka_module安裝與使用


【安裝】

ngx_kafka_module網址:https://github.com/brg-liuwei/ngx_kafka_module

1、安裝git

  yum install -y git

2、下載ngx_kafka_module依賴librdkafka(kafka的c客戶端源碼)

  cd /usr/local/src

  git clone https://github.com/edenhill/librdkafka

3、編譯與安裝ngx_kafka_module依賴librdkafka

  cd /usr/local/src/librdkafka

  ./configure

  make && make install

4、下載ngx_kafka_module

  cd /usr/local/src

  git clone https://github.com/brg-liuwei/ngx_kafka_module

5、下載nginx,本次下載的nginx版本為:nginx-1.18.0.tar.gz 下載地址

6、上傳至服務器並解壓:tar -zxvf nginx-1.18.0.tar.gz -C /usr/local

7、編譯nginx

  cd cd /usr/local/nginx-1.18.0/

  ./configure --add-module=/usr/local/src/ngx_kafka_module

8、安裝nginx

  make && make install

9、將nginx添加到環境變量。編輯/etc/profile,在末尾加上如下內容

export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin

      source /etc/profile

10、啟動nginx:nginx

  如果啟動報如下錯誤 

nginx: error while loading shared libraries: librdkafka.so.1: cannot open shared object file: No such file or directory

  則需要添加so庫

  echo "/usr/local/lib" >> /etc/ld.so.conf

  ldconfig

【使用】

1、啟動kafka

  kafka的安裝與啟動

 

2、創建主題

  kafka-topics.sh --zookeeper localhost:2181/kafka --create --topic tp_ngx_kafka --partitions 1 --replication-factor 1

3、修改nginx配置文件

  編輯nginx.conf文件(vim /usr/local/nginx/conf/nginx.conf),在http模塊內添加如下內容

  kafka;

  #kafka broker地址,多個地址以空格分隔開,替換成自己的broker地址

  kafka_broker_list 192.168.3.52:9092;

include /usr/local/nginx/conf/conf.d/*.conf;

  創建conf.d文件夾:mkdir /usr/local/nginx/conf/conf.d

       創建ngx-kafka-module.conf文件(vim /usr/local/nginx/conf/conf.d/ngx-kafka-module.conf),添加如下內容

server {
  listen   80;
#監聽的域名,替換成自己的域名 server_name kafka.test.com; location
/ { kafka_topic tp_ngx_kafka; } }

4、重新加載nginx配置文件

  nginx -s reload

 至此,ngx-kafka-module配置完成,下面我們做個示例,來演示

5、編寫html文件(index.html)。(注入引入jquery,這里我就不貼了,注意修改請求地址)

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>職位瀏覽</title>
        <script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
    </head>
    <body>
        <table>
            <tr>
                <th>職位</th>
                <th>企業</th>
                <th>薪資</th>
                <th>操作</th>
            </tr>
            <tr>
                <td>開發</td>
                <td>阿里</td>
                <td>10000</td>
                <td>
                    <button onclick="operation('A001', 'click')">點擊</button>
                    <button onclick="operation('A001', 'job_collect')">收藏</button>
                    <button onclick="operation('A001', 'cv_send')">投遞簡歷</button>
                    <button onclick="operation('A001', 'cv_upload')">上傳簡歷</button>
                </td>
            </tr>
            <tr>
                <td>開發</td>
                <td>騰訊</td>
                <td>20000</td>
                <td>
                    <button onclick="operation('A002', 'click')">點擊</button>
                    <button onclick="operation('A002', 'job_collect')">收藏</button>
                    <button onclick="operation('A002', 'cv_send')">投遞簡歷</button>
                    <button onclick="operation('A002', 'cv_upload')">上傳簡歷</button>
                </td>
            </tr>
            <tr>
                <td>開發</td>
                <td>拉勾</td>
                <td>30000</td>
                <td>
                    <button onclick="operation('A003', 'click')">點擊</button>
                    <button onclick="operation('A003', 'job_collect')">收藏</button>
                    <button onclick="operation('A003', 'cv_send')">投遞簡歷</button>
                    <button onclick="operation('A003', 'cv_upload')">上傳簡歷</button>
                </td>
            </tr>
        </table>
    </body>

    <script>
        

        function operation(job_code,action) {
            $.ajax({
                url: 'http://kafka.test.com/',
                type: 'POST',
                contentType: 'application/json;charset=utf-8',
                dataType: 'json',
                data:{
                  user_id:101,
                  act_time:  new Date().getTime(),
                  action:action,
                  job_code:job_code
                },
                success: function (data) {

                }
            })
        }
    </script>
</html>
View Code

6、上傳index.html到服務器

  #創建h5目錄

  mkdir -p /www/wwwroot/kafka

  cd /www/wwwroot/kafka

  #上傳文件

  rz -y

7、配置nginx

  vim /usr/local/nginx/conf/conf.d/h5-test.conf 

server {
  listen   80;
  server_name h5.test.com;

  location / {
     root /www/wwwroot/kafka/;
     index index.html;
  }
}

  nginx -s reload

8、訪問h5.test.com

  

 

 

  點擊按鈕,跨域了

9、解決跨域問題

  編輯ngx-kafka-module.conf文件(vim /usr/local/nginx/conf/conf.d/ngx-kafka-module.con),在location模塊下添加如下內容

     add_header Access-Control-Allow-Origin *;
     add_header Access-Control-Allow-Methods 'GET,POST';
     add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

  nginx重新加載配置文件:nginx -s reload

10、啟動kafka控制台消費者

  kafka-console-consumer.sh --bootstrap-server 192.168.3.52:9092 --topic tp_ngx_kafka

11、頁面點擊按鈕,在kafka控制台收到消息

  

 

 至此驗證完畢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM