[rabbitmq-discuss] Posting MQTT to RabbitMQ QOS=1
Adrian Yip
ayip at recondynamics.com
Fri Nov 22 02:19:29 GMT 2013
Hi,
I have a receiver that is waiting on an topic exchange and I can publish
MQTT messages with Mosquitto with QOS=0 just fine from multiple clients,
1000s of messages.
When I publish with QOS=1 however, the client appears successful in
publishing, but the receiver always stops at 20 messages. I can kick off
another client without stopping the receiver and it will also do the same
thing, the receiver will show 20 messages and nothing more.
Ideas?
Adrian
Receive_json.py
------------------
#!/usr/bin/env python
import pika, traceback
import json
prev_id = 0
def callback(ch, method, properties, body):
global prev_id
ch.basic_ack(delivery_tag=method.delivery_tag)
msgBody = json.loads(body)
print " [x] %r:%r" % (method.routing_key,msgBody,)
if prev_id + 1 != int(msgBody['id']):
print "Missing %d" % (prev_id + 1)
prev_id = msgBody['id']
return
while True:
try:
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='mqtt.topic',
type='topic')
result = channel.queue_declare("mqtt-json-queue")
queue_name = result.method.queue
# topic here is what the mqtt plugin posts to
channel.queue_bind(exchange='mqtt.topic',
queue=queue_name,
routing_key="json_routing_key")
print ' [*] Waiting for logs. To exit press CTRL+C'
channel.basic_consume(callback,
queue=queue_name
)
channel.start_consuming()
except Exception, e:
traceback.print_exc()
Client
------
import mosquitto
import sys
import time
import random
import json
def on_connect(self, mosq, obj, rc):
if rc == 0:
print("Connected successfully.")
if len(sys.argv) != 4:
print "Usage: cnt sleep_s qos"
exit(-1)
cnt = int(sys.argv[1])
sleep_s = float(sys.argv[2])
qos = int(sys.argv[3])
client = mosquitto.Mosquitto("test-client%d" % random.randint(1,100))
print client._client_id
client.connect("localhost",port=1884)
i = 1
while i <= cnt:
print "Sending JSON msg %d via MQTT" % i
msg = {}
msg["id"] = i
try :
client.publish("json_routing_key",json.dumps(msg),qos=qos)
except :
print "Unexpected publish error: ",sys.exc_info()[0]
i = i + 1
time.sleep(sleep_s)
time.sleep(2)
try:
client.disconnect()
except:
print "Unexpected disconnect error: ",sys.exc_info()[0]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20131121/dc80cfb6/attachment.htm>
More information about the rabbitmq-discuss
mailing list