首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IronMq + Laravel4:如何使其工作

IronMq + Laravel4:如何使其工作
EN

Stack Overflow用户
提问于 2013-10-10 08:46:47
回答 2查看 2.1K关注 0票数 2

我有一个问题,因为我的队列是由IronMQ接收的,但没有触发。就像我在这个问题上问的那样:https://stackoverflow.com/questions/19200285/laravel4-ironmq-queue-are-not-executed

但是我看到,在我的铁制仪表板中,在我订阅了一个新的域之后,它就不会添加到任何列表中。也许IronMQ应该显示一个已订阅域的列表,不是吗?这可能就是为什么我的队伍没有被关闭的原因。我怎样才能解决这个问题?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-10 13:59:08

我不确定您是否完成了所有需要完成的步骤,以便订阅队列,所以让我们来看看它们:

将队列配置为在app/config/Quee.php文件中默认为Iron,设置如下:

代码语言:javascript
复制
'default' => 'iron',

并配置连接:

代码语言:javascript
复制
'iron' => array(
    'driver'  => 'iron',
    'project' => 'YOUR PROJECT NUMBER',
    'token'   => 'YOUR TOKEN',
    'queue'   => 'YOUR QEUE NAME',
),

为队列/接收端点创建一个路由,并从队列::marshal方法返回响应:

代码语言:javascript
复制
Route::post('queue', function()
{

    Log::info('marshal!');

    return Queue::marshal();

});

测试一下!在服务器外部,可以使用卷发之类的方式访问它:

代码语言:javascript
复制
curl --data "param1=whatever" http://<your.domain.com>/queue

编辑:,您可以复制整行,只需用您的url重版即可。

在文件夹中打开日志文件:

代码语言:javascript
复制
app/storage/logs/

你应该在那里看到这样的东西

代码语言:javascript
复制
[2013-10-10 10:26:09] log.INFO: marshal! [] []

它是由我们添加到您的封送路由器的Log::info('marshal!');生成的。但是你可能也会看到一个错误,说“无效的数据”。尽管如此,我们并不是在做真正的测试,我们只需要知道你的法警路线是否有效。

现在,您可以在IronMQ上注册特定队列的url:

代码语言:javascript
复制
php artisan queue:subscribe <queue name on IronMQ> <url>

一个例子是:

代码语言:javascript
复制
php artisan queue:subscribe johnnyfittizio http://<your.domain.com>/queue

这是您在测试中使用的相同的url。

此命令必须向您显示:

代码语言:javascript
复制
Queue subscriber added: http://<your.domain.com>/queue

如果没有,您必须再次检查您的配置,您可能做了一些错误的地方。

然后,您可以转到您的IronMQ队列页面,并检查您的队列是否已订阅:

代码语言:javascript
复制
1. Go to https://hud.iron.io/dashboard

2. On your projects, click in tue MQ button of your project

3. Select the "Queues" tab

4. Click on your queue name, this must be the same you subscribed to using the command "artisan queue:subscribe"

5.In the "PUSH INFORMATION" box, check if your queue push type is set to "multicast".

6.Check if your queue is subscribed in the "SUBSCRIBERS" box, it's in the page bottom right area.

如果一切都设置好了,再次启动您的电子邮件(通过队列)并检查日志以查看是否"log.INFO: marshal!“出现在那里。这一次,它必须显示,但被IronMQ调用。

如果是这样,而您没有收到电子邮件,则队列正常工作,您必须检查您的电子邮件配置。

票数 9
EN

Stack Overflow用户

发布于 2013-10-10 16:59:46

感谢安东尼奥·里贝罗的帮助!为了使一切正常工作,需要做一些小小的改变:在IronMQ中,我必须改变队列的类型,从拉到多播,现在我终于可以看到我的订阅URL列表了。如果我运行这个测试应用程序,它运行的很顺利,队列就会正常启动。

如果您想知道原因,这是来自Iron.io支持的答案:

正如我在附件中看到的,您的队列具有“拉”类型。这意味着队列不会将HTTP(S) POST发送到端点,您需要通过API (或客户端库中的" get“方法/函数)获取消息。若要将队列转换为" push“类型,您可以: 1)更新队列信息并添加至少一个与推送队列相关的参数(例如,”订阅者“:{"url":"proto://domain/path"} )。通过HUD查看有关queues/ 2)的更多信息,更改队列类型。

编辑:

好的,为了最后的澄清:也可以设置单播。Iron.io支持解释了两者之间的差异:

代码语言:javascript
复制
Yes, you are able to add URLs to your push queues, both multicast and unicast.
Multicast sends message through POST to all subscribers URLs at the same time 
and retries on failed endpoints. 
But unicast sends to subscribers by turn while one of them returns 
right response and retries if all endpoints in subscribers list failed.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19291109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档