Search in sources :

Example 1 with Read

use of org.apache.beam.sdk.io.mqtt.MqttIO.Read in project beam by apache.

the class MqttIOTest method testReadNoClientId.

@Test(timeout = 60 * 1000)
public void testReadNoClientId() throws Exception {
    final String topicName = "READ_TOPIC_NO_CLIENT_ID";
    Read mqttReader = MqttIO.read().withConnectionConfiguration(MqttIO.ConnectionConfiguration.create("tcp://localhost:" + port, topicName)).withMaxNumRecords(10);
    PCollection<byte[]> output = pipeline.apply(mqttReader);
    PAssert.that(output).containsInAnyOrder("This is test 0".getBytes(), "This is test 1".getBytes(), "This is test 2".getBytes(), "This is test 3".getBytes(), "This is test 4".getBytes(), "This is test 5".getBytes(), "This is test 6".getBytes(), "This is test 7".getBytes(), "This is test 8".getBytes(), "This is test 9".getBytes());
    // produce messages on the brokerService in another thread
    // This thread prevents to block the pipeline waiting for new messages
    MQTT client = new MQTT();
    client.setHost("tcp://localhost:" + port);
    final BlockingConnection publishConnection = client.blockingConnection();
    publishConnection.connect();
    Thread publisherThread = new Thread() {

        public void run() {
            try {
                LOG.info("Waiting pipeline connected to the MQTT broker before sending " + "messages ...");
                boolean pipelineConnected = false;
                while (!pipelineConnected) {
                    Thread.sleep(1000);
                    for (Connection connection : brokerService.getBroker().getClients()) {
                        if (!connection.getConnectionId().isEmpty()) {
                            pipelineConnected = true;
                        }
                    }
                }
                for (int i = 0; i < 10; i++) {
                    publishConnection.publish(topicName, ("This is test " + i).getBytes(), QoS.AT_LEAST_ONCE, false);
                }
            } catch (Exception e) {
            // nothing to do
            }
        }
    };
    publisherThread.start();
    pipeline.run();
    publishConnection.disconnect();
    publisherThread.join();
}
Also used : Read(org.apache.beam.sdk.io.mqtt.MqttIO.Read) MQTT(org.fusesource.mqtt.client.MQTT) BlockingConnection(org.fusesource.mqtt.client.BlockingConnection) Connection(org.apache.activemq.broker.Connection) BlockingConnection(org.fusesource.mqtt.client.BlockingConnection) Test(org.junit.Test)

Aggregations

Connection (org.apache.activemq.broker.Connection)1 Read (org.apache.beam.sdk.io.mqtt.MqttIO.Read)1 BlockingConnection (org.fusesource.mqtt.client.BlockingConnection)1 MQTT (org.fusesource.mqtt.client.MQTT)1 Test (org.junit.Test)1