在消费者里面投递一个新的队列出现报错 Cannot declare class \Workerman\Protocols\Stomp, because the name is already in use
消费者
use Webman\Stomp\Consumer;
use Workerman\Stomp\AckResolver;
class AsyncGeneratedVideoDataFastModel implements Consumer
{
// 要消费的队列名
public $queue = 'asyncGeneratedVideoDataFastModel';
// 连接名,对应 plugin/webman/stomp/stomp.php 里的连接`
public $connection = 'default';
public $ack = 'client';
// 值为 client 时需要调用$ack_resolver->ack()告诉服务端已经成功消费
// 值为 auto 时无需调用$ack_resolver->ack()
//public $ack = 'auto';
// 消费
public function consume($data, AckResolver $ack_resolver = null)
{
$userPlanParts = UserNovelChapterPartModel::getInstance()->getWhere(['user_planid' => $data['user_planid']])->orderBy('number', 'asc')->get();
foreach ($userPlanParts as $val) {
//省略多余的代码
Common::fastModelGeneratedAIImageByTemplate($aiImageCommand, $prompt, $modelVal, $options, $source, $data['requestid'] ?? '');
}
//确认已经消费
$ack_resolver->ack();
}
public function onConsumeFailure(\Throwable $e, $package)
{
}
}
Common::fastModelGeneratedAIImageByTemplate
public static function fastModelGeneratedAIImageByTemplate($command,$prompt, $modelVal,$options=[],$source='',$sourceRequestId='')
{
//省略多余的代码
// 投递消息
RedisQueue::getInstance()->sendStompQueue($queue, $data, 'ai_image_consumer');
//省略多余的代码
}
RedisQueue::getInstance()->sendStompQueue
public function sendStompQueue($queue,$data,$connect='default')
{
//省略多余的代码
// 投递消息
\Webman\Stomp\Client::connection($connect)->send($queue, json_encode($data));
}
[2024-11-07 19:00:35] queue_exception.ERROR: 消息发送时间: 2024-11-07 19:00:35
队列ID: 65827
队列名称: asyncGeneratedVideoDataFastModel
队列参数: {"requestid":"289197c4ac6ae2676aabfbb1a631a330","user_planid":1780,"async_generate_prompt":1,"queueid":65827}
开始时间: 2024-11-07 19:00:33
结束时间: 2024-11-07 19:00:35
异常内容: Cannot declare class \Workerman\Protocols\Stomp, because the name is already in use
#0 [internal function]: {closure}()
#1 /home/wwwroot/php/vendor/workerman/stomp/src/Client.php(144): class_alias()
#2 /home/wwwroot/php/vendor/webman/stomp/src/Client.php(50): Workerman\Stomp\Client->__construct()
#3 /home/wwwroot/php/vendor/webman/stomp/src/Client.php(96): Webman\Stomp\Client->__construct()
#4 /home/wwwroot/php/app/common/lib/RedisQueue.php(41): Webman\Stomp\Client::connection()
#5 /home/wwwroot/php/app/common/lib/RedisQueue.php(42): app\common\lib\RedisQueue->app\common\lib\{closure}()
#6 /home/wwwroot/php/app/common/lib/Common.php(1615): app\common\lib\RedisQueue->sendStompQueue()
#7 /home/wwwroot/php/app/queue/stomp/generatedworkfastmodel/AsyncGeneratedVideoDataFastModel.php(368): app\common\lib\Common::fastModelGeneratedAIImageByTemplate()
#8 /home/wwwroot/php/app/queue/stomp/generatedworkfastmodel/AsyncGeneratedVideoDataFastModel.php(115): app\queue\stomp\generatedworkfastmodel\AsyncGeneratedVideoDataFastModel->generatedDescAndAIImage()
#9 /home/wwwroot/php/app/queue/stomp/generatedworkfastmodel/AsyncGeneratedVideoDataFastModel.php(78): app\queue\stomp\generatedworkfastmodel\AsyncGeneratedVideoDataFastModel->handle()
#10 /home/wwwroot/php/vendor/webman/stomp/src/Process/Consumer.php(69): app\queue\stomp\generatedworkfastmodel\AsyncGeneratedVideoDataFastModel->consume()
#11 [internal function]: Webman\Stomp\Process\Consumer->Webman\Stomp\Process\{closure}()
#12 /home/wwwroot/php/vendor/workerman/stomp/src/Client.php(447): call_user_func()
#13 /home/wwwroot/php/vendor/workerman/workerman/Connection/TcpConnection.php(646): Workerman\Stomp\Client->onConnectionMessage()
#14 /home/wwwroot/php/vendor/workerman/workerman/Events/Select.php(311): Workerman\Connection\TcpConnection->baseRead()
#15 /home/wwwroot/php/vendor/workerman/workerman/Worker.php(1635): Workerman\Events\Select->loop()
#16 /home/wwwroot/php/vendor/workerman/workerman/Worker.php(1426): Workerman\Worker::forkOneWorkerForLinux()
#17 /home/wwwroot/php/vendor/workerman/workerman/Worker.php(1400): Workerman\Worker::forkWorkersForLinux()
#18 /home/wwwroot/php/vendor/workerman/workerman/Worker.php(560): Workerman\Worker::forkWorkers()
#19 /home/wwwroot/php/vendor/workerman/webman-framework/src/support/App.php(132): Workerman\Worker::runAll()
#20 /home/wwwroot/php/start.php(7): support\App::run()
#21 {main}