Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[paho-dev] Mqtt Paho - Trying to publish while broker is unreachable

Hi all paho-dev members.

This is my first (baby) step in the "Internet of things" world, and I'm having a hard time with it :)

Let me introduce myself : I'm Pablo, a french developer who is trying to connect raspberry pi sensors to a central server to process sensors values. 

But I'm having a hard time handling WiFi instability in my environment.

So I'm copying here a message I already put in the open on StackOverflow

http://stackoverflow.com/questions/21269331/mqtt-paho-trying-to-publish-while-broker-is-unreachable

Thank you for any help you could provide.

I'm going back to the Java Paho source code to try answering my question by myself ;)


I'm begininng to use Mqtt and I have a hard time with handling an unreliable network. I'm using a Paho Java Client (in groovy) to publish messages to a distant Mosquitto Broker.

Is there a way, when the broker is unreachable, to have the Paho client persist the message and automatically re-connect to the broker and publish the locally stored messages ? Do I have to handle everything myself, using for example a local broker ?

Here is my client building code

    String persistenceDir = config['persistence-dir'] ?: System.getProperty('java.io.tmpdir')
    def persistence = new MqttDefaultFilePersistence(persistenceDir)
    client = new MqttClient(uri, clientId, persistence)
    client.setCallback(this)
    options = new MqttConnectOptions()
    if (config.password) {
        options.setPassword(config.password as char[])
        options.setUserName(config.user)
    }
    options.setCleanSession(false)
    client.connect(options)

And my publish code

  def message = new MqttMessage(Json.encode(outgoingMessage).getBytes())
    try {
    client?.connect(options)
    def topic = client.getTopic('processMsg')
    message.setQos(1)
    def token = topic.publish(message)
    if (client) {
        client.disconnect()
    }

Thanks



--
Pablo Lopez
email & gtalk : plopez@xxxxxxxx / mob: +33-6.07.56.04.64
Xebia, Software Development Done Right.
http://blog.xebia.fr

Back to the top