55 lines
1.7 KiB
Groovy
55 lines
1.7 KiB
Groovy
@Grab(group='org.fusesource.mqtt-client', module='mqtt-client', version='1.10')
|
|
//@GrabResolver(name='Paho', root="https://repo.eclipse.org/content/repositories/paho-releases/")
|
|
//@Grab(group='org.eclipse.paho', module='org.eclipse.paho.client.mqttv3', version='1.0.2')
|
|
|
|
import org.fusesource.mqtt.client.BlockingConnection
|
|
import org.fusesource.mqtt.client.MQTT
|
|
import org.fusesource.mqtt.client.Message
|
|
import org.fusesource.mqtt.client.QoS
|
|
import org.fusesource.mqtt.client.Topic
|
|
|
|
class PublisherThread extends Thread {
|
|
|
|
private final int pubId
|
|
private final String host = "localhost"
|
|
private final byte[] payload
|
|
private final int numToSend
|
|
|
|
PublisherThread(int pubId, int numToSend, byte[] payload) {
|
|
this.numToSend = numToSend
|
|
this.payload = payload
|
|
this.pubId = pubId
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
MQTT mqtt = new MQTT()
|
|
//mqtt.setHost("test.mosquitto.org", 1883);
|
|
mqtt.setHost(host, 1883)
|
|
mqtt.setCleanSession(true)
|
|
mqtt.setHost(host, 1883)
|
|
|
|
mqtt.setClientId("PublisherClient${pubId}")
|
|
BlockingConnection connection = mqtt.blockingConnection()
|
|
connection.connect()
|
|
(1..numToSend).each {
|
|
connection.publish("/topic${pubId}", this.payload, QoS.AT_MOST_ONCE, false)
|
|
}
|
|
connection.publish("/exit${pubId}", 'Exit'.bytes, QoS.AT_MOST_ONCE, false)
|
|
connection.disconnect()
|
|
}
|
|
}
|
|
|
|
if (args.size() < 1) {
|
|
println "Usage: groovy issue79_stress_multipub.groovy num_publishers"
|
|
}
|
|
|
|
final byte[] payload = 'Hello world!!'.bytes
|
|
|
|
int numPublishers = args[0] as Integer
|
|
(1..numPublishers).each { numPub ->
|
|
def pubTh = new PublisherThread(numPub, 5, payload)
|
|
pubTh.start()
|
|
}
|
|
|
|
println "Started all publisher threads" |