Skip to main content

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

Hi Pablo,

the short answer is that you have to handle the situation by yourself.   Having some buffering capability in the client is something that you are not alone in asking for.  I'll make sure to add that to our requirements.

One way you can address this, is, as you point out, with a local Mosquitto broker and a bridge.

Ian

On 21/01/14 21:31, Pablo Lopez wrote:

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 persistence
Dir = 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


_______________________________________________
paho-dev mailing list
paho-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/paho-dev


Back to the top