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