4
我有一个使用AnyEvent :: MQTT订阅消息队列的perl脚本。保持perl脚本运行
当时我希望它做的就是当它收到消息时打印出来。我对perl完全陌生,所以我使用它随附的演示代码,其中包含一些将STDIN上的任何内容作为消息发布的功能 - 这很好,我可以看到所有收到的消息。
此代码如下
#!/usr/bin/perl
use strict;
use warnings;
use AnyEvent::MQTT;
my $mqtt = AnyEvent::MQTT->new;
my $cv = $mqtt->subscribe(topic => '/AlarmMode',
callback => sub {
my ($topic, $message) = @_;
print $topic, ' ', $message, "\n"
});
my $qos = $cv->recv; # subscribed, negotiated QoS == $qos
# publish line-by-line from file handle
$cv = $mqtt->publish(handle => \*STDIN,
topic => '/topic');
这个问题我有是,如果我的评论publish line-by-line from file handle
后删除一切,然后我的应用程序,只要它跑了退出。
我试过包括一个while循环,睡5秒但不起作用(应用程序看起来像挂了)。
我知道我需要做的事情向告诉应用程序只是为了生存和寒意,但我不知道该命令是什么:-)
我最后一行是'my $ qos = $ cv-> recv; #订阅,协商QoS == $ qos'。那会不会等待呢? –
它确实在等待。它等待订阅完成,因为那是在那个cv上调用'send'的时候。但是你想继续等待。 [在我的回答中更名为避免混淆。] – ikegami