草庐IT

栈队列

全部标签

8. 微服务之消息队列RabbitMQ以及五种消息队列模式

8.1同步调用即客户端向服务端请求做数据处理,客户端需要一直等待服务端处理直到返回结果给客户端同步调用存在的问题:耦合度高:每次加入新的需求,都要修改原来的代码性能下降:调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和资源浪费:调用链中的每个服务在等待响应过程中,不能释放请求占用的资源,高并发场景下会极度浪费系统资源级联失败:如果服务提供者出现问题,所有调用方都会跟着出问题,如同多米诺牌一样,迅速导致整个微服务群故障优点:时效性较强,可以立即得到结果8.2异步调用即客户端并不是直接向服务端发起请求,而是会通过一个消息队列,客户端发起请求放入消息队列后就不会去等待服务

php - 使用 Laravel 的队列发送消息

我想通过电子邮件或短信或推送通知发送消息,我想使用Laravel的队列。假设我有超过10000封电子邮件要通过队列发送。这一行开始队列推送:Queue::push('SendEmail',array('email'=>'me@email.com'));现在我不知道这个队列对ironMQ到底做了什么,意思是我的消息在推送后什么时候开始发送以及ironMQ有什么好处?有什么帮助或想法吗?提前致谢。 最佳答案 外部服务只是管理器,如果你想推迟工作,请使用Queue::later()。 关于ph

php - 如何为 Amazon SQS 运行队列和配置 Laravel ENV

我在Laravel5.2应用程序中使用AmazonsSQS时遇到问题。当我使用数据库队列驱动程序时,我的应用程序排队事件工作正常,但当我使用sqs时却不行我想我可能没有正确传递Amazon的凭据。这是我从我的ENV文件中设置的我已经安装了aws/aws-sdk-phpQUEUE_DRIVER=sqsSQS_PUBLIC_KEY=PUBLICKEYSQS_SECRET_KEY=SECRETKEYSQS_PREFIX=https://sqs.us-west-2.amazonaws.com/NUMBERSQS_QUEUE=QUE我的配置/队列是这样的:'sqs'=>['driver'=>'s

php - laravel 队列守护进程邮件停止运行并出现 SSL 错误

我正在运行一个laravel队列守护进程,它根据所采取的操作发送邮件。这是通过主管运行以确保它始终运行。起初它工作正常,但一段时间后邮件停止发送。错误不是向上报告链,而是日志显示:[2014-07-3020:00:21]production.ERROR:exception'ErrorException'withmessage'fwrite():SSLoperationfailedwithcode1.OpenSSLErrormessages:error:1409F07F:SSLroutines:SSL3_WRITE_PENDING:badwriteretry'in/srv/www/exa

php - Laravel5 和 GAE 使用多队列

我在GoogleAppEngine上运行Laravel5.1项目。为了加快这个过程,我找到了一个包,它提供了GAE和Laravel5实现之间的接口(interface)。(https://github.com/shpasser/GaeSupportL5)现在,我想以不同的方式处理某些类型的工作。不同的重试或失败处理。另外,我不希望某些类型的工作仅仅因为坐在队列中就干扰了其他工作。要做到这一点,我的猜测是使用多个队列。在shpasser包的实现中,貌似只能使用一个queueconnection。但是GAE和Laravel5的文档都支持多队列。我该怎么做? 最佳

php - Laravel - 是否可以从 Redis 队列中删除特定作业?

例如:当我想更新产品时,我会为此创建作业并将作业放入队列。工作在那里等待,但仍未处理,同时我需要创建新工作来更新相同的产品但使用不同的数据,现在我想从队列中删除旧的更新工作并将新工作推送到队列中,有什么想法吗? 最佳答案 我有个主意。在每次作业分派(dispatch)时,您都会设置一个缓存键,这个uuid也会在作业的属性上设置。$uuid=uuid();Redis::set("update-product-token-$ID",$uuid);$data['uuid']=$uuid;ProductUpdateJob::dispatch

php - Laravel 队列监听器超时

在我的Linux服务器上,我有以下cron:*****php/var/www/core/v1/general-api/artisanschedule:run>>/dev/null2>&1CRON正常工作。我在我的Kernel.php中定义了一个预定命令:protectedfunctionschedule(Schedule$schedule){$schedule->command('pickup:save')->dailyAt('01:00');$schedule->command('queue:restart')->hourly();}计划任务在凌晨1点运行我的自定义命令phparti

php - 如何执行 laravel 作业(队列)?

开发人员,我有一个问题。我的队列不工作,或者我只是不明白它是如何工作的。我创建了一个应该添加新队列作业的命令。队列的驱动程序是-数据库。执行我的命令后,我在表“工作”中看到了一个新行。之后我尝试执行“phpartisanqueue:work”——但没有任何反应。请帮帮我,我该如何执行这项工作? 最佳答案 Fromthedocumentation:[DaemonQueueListener]queue:workartisan命令包含一个--daemon选项,用于强制队列worker继续处理作业,而无需重新启动框架。与queue:list

php - Laravel Artisan::队列不工作

我有一个名为“import:excelfile”的artisan命令签名我想在我的Controller中运行该命令。在我的Controller中一切正常。但是Artisan::queue('import:excelfile')不是从Controller运行的。但它完美地从CLI运行。问题出在哪里?请看我的代码Controller方法代码http://pastebin.com/45dj179Hartisan代码http://pastebin.com/zNCtQKZ0谢谢 最佳答案 尝试以下方法:Artisan::queue('Some

php - Laravel Forge 在同一台服务器上的多个队列

我使用LaravelForge在不同的环境中运行了三个相同的Laravel应用程序。假设这是三个站点:site.com(生产)staging.site.com(暂存)dev.site.com(开发)在生产站点上,我运行LaravelHorizo​​n来监控生产站点的队列。当我在我的dev.site.com上运行密码重置时,由于队列中发生异常,电子邮件没有发送给用户。Illuminate\Database\Eloquent\ModelNotFoundException:Noqueryresultsformodel[App\Models\User].in/home/forge/site.c