Se você iniciar o broker (com mosquitto
), inscreva-se em um tópico my/test
com
mosquitto_sub -t my/test -v
você pode publicar mensagens simples e ver o que receberá. Por exemplo,
mosquitto_pub -t my/test -m inline
aparecerá na saída da assinatura como uma única linha
my/test inline
Se todas as suas mensagens forem desse tipo, você deve simplesmente fazer um loop para chamar sua função:
... | pipeTee | while testPipe; do : ; done
mas sua função não pode usar cat
ou nunca retornará.
Se você quiser enviar mensagens de múltiplas linhas, você precisará substituir o cat
por uma leitura dentro de outro, enquanto o loop detectar de alguma forma o final da mensagem. Por exemplo, se você publicar com
echo -e 'my multi\nline test' | mosquitto_pub -t my/test -s
você verá três linhas:
my/test my multi
line test
<there is a blank line here>
A linha em branco é porque echo
adiciona \n
à string. Você precisaria então substituir cat
por algo como
while read data && [ "$data" != "" ]
do echo "Got $data"
done
Como você controla o que publica, talvez prefira enviar linhas únicas de dados ou encerrar mensagens com uma string especial que pode ser facilmente identificada como ===eof===
.