kafka安裝及Kafka-PHP擴展的使用

来源:http://www.cnblogs.com/imarno/archive/2016/02/18/5198940.html
-Advertisement-
Play Games

話說用了就要有點產出,要不然過段時間又忘了,所以在這裡就記錄一下試用Kafka的安裝過程和php擴展的試用。 實話說,如果用於隊列的話,跟PHP比較配的,還是Redis。用的順手,呵呵,只是Redis不能有多個consumer。但Kafka官方對PHP不支持,PHP擴展是愛好者或使用者寫的。下麵就開


話說用了就要有點產出,要不然過段時間又忘了,所以在這裡就記錄一下試用Kafka的安裝過程和php擴展的試用。

實話說,如果用於隊列的話,跟PHP比較配的,還是Redis。用的順手,呵呵,只是Redis不能有多個consumer。但Kafka官方對PHP不支持,PHP擴展是愛好者或使用者寫的。下麵就開始講Kafka的安裝吧。我以CentOS6.4為例,64位。

一. 首先確認下jdk有沒有安裝

使用命令

[root@localhost ~]# java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)

如果有以上信息的話,就往下安裝吧,有些可能是jdk對不上,那就裝到對的上的。如果沒有安裝,就看一下下麵的jdk安裝方法:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

到這個地址下載jdk8版本,我下載的是jdk-8u73-linux-x64.tar.gz,然後解壓到/usr/local/jdk/下。

然後打開/etc/profile文件

[root@localhost ~]# vim /etc/profile

把下麵這段代碼寫到文件里

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_73
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

最後

[root@localhost ~]# source /etc/profile

這時jdk就生效了,可以使用 java -version驗證下。

二. 接下來安裝Kafka

1. 下載Kafka

到http://kafka.apache.org/downloads.html下載相應的版本,我使用的是kafka_2.9.1-0.8.2.2.tgz

2. 下載完解壓到你喜歡的目錄

我是解壓到 /usr/local/kafka/kafka_2.9.1-0.8.2.2

3. 運行預設的Kafka

啟動Zookeeper server

[root@localhost kafka_2.9.1-0.8.2.2]# sh bin/zookeeper-server-start.sh config/zookeeper.properties &

啟動Kafka server

[root@localhost kafka_2.9.1-0.8.2.2]# sh bin/kafka-server-start.sh config/server.properties &

運行生產者producer

[root@localhost kafka_2.9.1-0.8.2.2]# sh bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

運行消費者consumer

[root@localhost kafka_2.9.1-0.8.2.2]# sh bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

這樣,在producer那邊輸入內容,consumer馬上就能接收到。

4. 當有跨機的producer或consumer連接時

需要配置config/server.properties的host.name,要不然跨機的連不上。

三. Kafka-PHP擴展

使用了一圈,就https://github.com/nmred/kafka-php可以用。

我是使用composer安裝的,以下是示例:

producer.php

<?php
require 'vendor/autoload.php';

while (1) {
    $part = mt_rand(0, 1);
    $produce = \Kafka\Produce::getInstance('kafka0:2181', 3000);
    // get available partitions
    $partitions = $produce->getAvailablePartitions('topic_name');
    var_dump($partitions);
    // send message
    $produce->setRequireAck(-1);
    $produce->setMessages('topic_name', 0, array(date('Y-m-d H:i:s'));
   
    sleep(3);
}

consumer.php

require 'vendor/autoload.php';

$consumer = \Kafka\Consumer::getInstance('kafka0:2181');
$group = 'topic_name';
$consumer->setGroup($group);
$consumer->setFromOffset(true);
$consumer->setTopic('topic_name', 0);
$consumer->setMaxBytes(102400);
$result = $consumer->fetch();
print_r($result);
foreach ($result as $topicName => $partition) {
    foreach ($partition as $partId => $messageSet) {
    var_dump($partition->getHighOffset());
        foreach ($messageSet as $message) {
            var_dump((string)$message);
        }
    var_dump($partition->getMessageOffset());
    }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1
  • 效果如下: public void plAddSY(object sender, EventArgs e) { //C#遍歷指定文件夾中的所有文件 DirectoryInfo TheFolder = new DirectoryInfo(Request.PhysicalApplicationPath
  • 經常分不清楚目錄路徑的問題,今天自己總結一下: ~/表示文件所在的根目錄。 ../表示文件所在的上級目錄。 在Server.Mappath()方法中,測試的結果是:~/ ../ / ./ 都表示文件所在的路徑。 / 和 \ 使用的方面: /用於網站網址路徑中。而且表示./ ../ ~/ 都有 /符號
  • 最近在做的一個項目其中的一部分是與遠程伺服器進行交互,確定身份驗證的合法性,於是編寫了SendRequest方法 此方法發送給遠程伺服器XML請求,伺服器經過處理後,返回XML回應,由此方法接收到後進行返回。 1 protected string SendRequest(string strXML)
  • 一、創建拖動組件 0.Draggable組件不依賴於其他組件 1.使用標簽創建 拖動組件 2.使用js創建 拖動組件 二、屬性 1.revert:如果設置為true,在拖動停止時元素將返回起始位置 2.cursor:拖動時的CSS指針樣式 $(function () { $("#box").drag...
  • 在這篇文章中,將介紹一些提高 ASP.NET Web 應用性能的方法和技巧。眾所周知,解決性能問題是一項繁瑣的工作,當出現性能問題,每個人都會歸咎於編寫代碼的開發人員。 以下為譯文 那性能問題到底該如何解決?以下是應用系統發佈前,作為 .NET 開發人員需要檢查的點。 1.debug=「false」
  • Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpo
  • 在eclipse里jsp編譯後的java和class文件的位置 eclipse版本不一樣,位置也不一樣第一種:1.java類編譯後產生的.class文件在D:\workspace\test\WEB-INF\classes下; 2.jsp產生的JAVA類文件則在D:\workspace\test\wo
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...