草庐IT

单调双向队列

全部标签

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

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

php - Symfony 2 项目中的双向身份验证

我需要根据此算法在我的Symfony2项目之一中实现双向身份验证过程:用户在身份验证表单中输入用户名和密码并提交。系统首先以默认方式检查他的用户名和密码(所有用户都存储在DoctrineORM中)。如果上一步失败,调用外部API并将用户名和md5(password)传递给它。如果上一步成功,则创建一个新的用户实体并将其用作经过身份验证的用户。如果第3步失败,则认为身份验证失败。我已经有一个服务,可以调用它来使用外部API通过用户名和密码对用户进行身份验证,我只是在寻找一种在身份验证过程中使用它的方法。实现此行为的最简单方法是什么?我只需要指出正确的方向。更新实现“customauthe

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

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

php - Symfony2 ManytoMany 双向关系 - 如何手动持久化

我正在处理一个包含2个输入字段和一个提交按钮的表单。第一个字段是一个简单的下拉列表(类别),而另一个是标签输入字段(标签),您可以在其中一次输入多个标签。这两个字段仅接受预定义的输入选项。类别选项值在javascript中硬编码:categories=[{"id":1,"categoryname":"standard"},{"id":2,"categoryname":"premium"},{"id":3,"categoryname":"gold"}];tag的选项是从数据库中的tag表中获取的。这是数据库表的屏幕截图:Category和Tag实体与Doctrine的ManytoMany

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 - 一对一、自引用、双向关系

我正在尝试与实体Revision创建一对一、自引用、双向关系(哇),看起来像这个:/***@Entity()*@Table(name="rev")*/classRevisionextendsBaseEntity{/***@Id*@Column(type="integer")*@GeneratedValue*/protected$id;/***@Column(type="string")*/protected$comment;/***@OneToOne(targetEntity="Revision",inversedBy="parent")*@JoinColumn(name="revis