萌新,在聊天項目中,每次發(fā)送消息時都經(jīng)過消息隊列,想使用Kafka,但不知道如何和gatewayworker結合。邏輯是寫在EVENT的onMessage里,每次接收到消息往隊列里推,然后同時又接收,再調(diào)gateway的方法嗎?各位大佬能給個demo嗎?
類似Code如下
<?php
require_once __DIR__ . './autoload.php';
use Workerman\Worker;
$consumer = new Worker();
$consumer->count = 8;
$consumer->onWorkerStart = function () {
// @TODO Your code here...
Worker::stopAll();
};
Worker::runAll();
感謝大佬,但是有個疑問就是,單獨寫一個消費腳本來處理Kafka的數(shù)據(jù)時需要用到gateway的方法,比如A發(fā)送消息給B,在消費時要調(diào)用gateay的方法發(fā)送消息給B. 這點如何在消費腳本里做到呢?
TestConsumer.php
<?php
require_once __DIR__ . './autoload.php';
use Workerman\Worker;
$consumer = new Worker();
$consumer->count = 8;
$consumer->onWorkerStart = function () {
// @TODO Your code here...
// @TODO Your code here...
//TestModule->dealData();
Worker::stopAll();
};
Worker::runAll();
TestModule.php
GatewayWorker\Lib\Gateway 自行下載獨立文件
<?php
use GatewayWorker\Lib\Gateway;
function dealData() {
// Eg.拿到Kafka的一條數(shù)據(jù) & json
$data = json_decode($msg, true);
if (!$data) {
return false;
}
switch($data['type']) {
case 'A_to_B':
Gateway::sendToUid("B", json_encode($msg));
break;
case 'B_to_A':
Gateway::sendToUid("A", json_encode($msg));
break;
}
}