Message Broker MQTT
Ir para navegação
Ir para pesquisar
Sobre
Mosquitto
Requisitos
- Instalar o mosquitto server
$ sudo apt-get install mosquitto
- Para subscrever e publicar, instalar o mosquitto-clients
$ sudo apt-get install mosquitto-clients
- Liberar porta de entrada 1883
Comandos
- Subscrever
- Genérico: mosquitto_sub -h host -t subject
- Exemplo: mosquitto_sub -h test.mosquitto.org -t testCleber
- Exemplo: mosquitto_sub -t test.mqtt.topic
- Publicar
- Genérico: mosquitto_pub -h host -t subject -m message
- Exemplo: mosquitto_pub -h dweet.io -t testeCleber -m OlaMundo!
- Subscrever em todos os tópicos para depuração (modo verboso -v), observar qeue -h foi omitido pois neste exemplo está rodando no próprio servidor mosquitto:
- mosquitto_sub -v -t \$SYS/#
Rotas Camel
- Publicar:
from("timer:test?period=2500").process(new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setBody("OlaMundo!");
}
}).to("mqtt:camelArtifact?host=tcp://192.168.0.113:1883&publishTopicName=test.mqtt.topic");
- Subscrever:
from("mqtt:camelArtifact?host=tcp://192.168.0.113:1883&subscribeTopicName=test.mqtt.topic")
.transform(body().convertToString())
.to("log:CamelArtifactLoggerOut?level=info");
Exemplo de geração de mensagens de teste
- Gerando mensagens a cada 5 segundos (script counter_mqtt.sh)
#!/bin/bash
# /etc/rc.d/init.d/
# Source function library
. /etc/init.d/functions
COUNTING=true
start() {
echo "Publishing in mosquitto test server"
#Starting counter in ZERO
COUNTER=0
#Get current datetime put it in a variable
CURRENTDATETIME="$(date +'%d/%m/%Y-%T')"
#Publish in mosquitto server (must be running in the svr and TCP 1883 port opened)
mosquitto_pub -h 192.168.0.113 -m "$COUNTER-$CURRENTDATETIME" -t mqtt_test
while [ COUNTING ]
do
sleep 5
COUNTER=$[$COUNTER + 1]
CURRENTDATETIME="$(date +'%d/%m/%Y-%T')"
mosquitto_pub -h 192.168.0.113 -m "$COUNTER-$CURRENTDATETIME" -t mqtt_test
done
return
}
stop() {
echo -n "Shutting down : "
echo "Stopping mosquitto test pushish messages"
COUNTING=false
return
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
;;
restart)
echo "Restarting mosquitto test pushish messages"
COUNTING=true
;;
*)
echo "Usage: {start|stop|status|reload|restart[|probe]"
exit 1
;;
esac
exit $?
Fonte: https://www.linux.com/learn/managing-linux-daemons-init-scripts
- Colocando o gerador de mensagens na inicialização do linux
$ sudo mv counter_mqtt.sh /etc/init.d/
$ sudo chmod +x /etc/init.d/counter_mqtt.sh
$ sudo update-rc.d counter_mqtt.sh defaults
Fonte: http://stackoverflow.com/questions/7221757/run-automatically-program-on-startup-under-linux-ubuntu