Search in sources :

Example 26 with Topic

use of org.fusesource.mqtt.client.Topic in project apex-malhar by apache.

the class AbstractMqttInputOperator method initializeConnection.

private void initializeConnection() throws Exception {
    connection = client.blockingConnection();
    connection.connect();
    if (!topicMap.isEmpty()) {
        Topic[] topics = new Topic[topicMap.size()];
        int i = 0;
        for (Map.Entry<String, QoS> entry : topicMap.entrySet()) {
            topics[i++] = new Topic(entry.getKey(), entry.getValue());
        }
        connection.subscribe(topics);
    }
}
Also used : QoS(org.fusesource.mqtt.client.QoS) Topic(org.fusesource.mqtt.client.Topic) HashMap(java.util.HashMap) Map(java.util.Map)

Example 27 with Topic

use of org.fusesource.mqtt.client.Topic in project camel by apache.

the class MQTTEndpoint method createSubscribeTopics.

Topic[] createSubscribeTopics() {
    String subscribeTopicList = configuration.getSubscribeTopicNames();
    if (subscribeTopicList != null && !subscribeTopicList.isEmpty()) {
        String[] topicNames = subscribeTopicList.split(",");
        Topic[] topics = new Topic[topicNames.length];
        for (int i = 0; i < topicNames.length; i++) {
            topics[i] = new Topic(topicNames[i].trim(), configuration.getQoS());
        }
        return topics;
    } else {
        // fall back on singular topic name
        String subscribeTopicName = configuration.getSubscribeTopicName();
        subscribeTopicName = subscribeTopicName != null ? subscribeTopicName.trim() : null;
        if (subscribeTopicName != null && !subscribeTopicName.isEmpty()) {
            Topic[] topics = { new Topic(subscribeTopicName, configuration.getQoS()) };
            return topics;
        }
    }
    LOG.warn("No topic subscriptions were specified in configuration");
    return null;
}
Also used : Topic(org.fusesource.mqtt.client.Topic) UriEndpoint(org.apache.camel.spi.UriEndpoint) DefaultEndpoint(org.apache.camel.impl.DefaultEndpoint) AsyncEndpoint(org.apache.camel.AsyncEndpoint)

Example 28 with Topic

use of org.fusesource.mqtt.client.Topic in project camel by apache.

the class MQTTProducerReconnectTest method testProduce.

@Test
public void testProduce() throws Exception {
    MQTT mqtt = new MQTT();
    mqtt.setHost(MQTTTestSupport.getHostForMQTTEndpoint());
    final BlockingConnection subscribeConnection = mqtt.blockingConnection();
    subscribeConnection.connect();
    Topic topic = new Topic(TEST_TOPIC, QoS.AT_MOST_ONCE);
    Topic[] topics = { topic };
    subscribeConnection.subscribe(topics);
    final CountDownLatch latch = new CountDownLatch(numberOfMessages);
    Thread thread = new Thread(new Runnable() {

        public void run() {
            for (int i = 0; i < numberOfMessages; i++) {
                try {
                    Message message = subscribeConnection.receive();
                    message.ack();
                    latch.countDown();
                } catch (Exception e) {
                    e.printStackTrace();
                    break;
                }
            }
        }
    });
    thread.start();
    for (int i = 0; i < numberOfMessages; i++) {
        if (i == 5) {
            LOG.info("Stopping MQTT transport");
            brokerService.getTransportConnectorByScheme("mqtt").stop();
            Thread starter = new Thread(new Runnable() {

                public void run() {
                    try {
                        Thread.sleep(3000);
                        LOG.info("Starting MQTT transport again");
                        brokerService.getTransportConnectorByScheme("mqtt").start();
                    } catch (Exception e) {
                    // ignore
                    }
                }
            });
            starter.start();
        }
        try {
            template.sendBody("direct:foo", "test message " + i);
        } catch (Exception e) {
        // ignore
        }
    }
    latch.await(20, TimeUnit.SECONDS);
    assertTrue("Messages not consumed = " + latch.getCount(), latch.getCount() == 0);
}
Also used : MQTT(org.fusesource.mqtt.client.MQTT) Message(org.fusesource.mqtt.client.Message) BlockingConnection(org.fusesource.mqtt.client.BlockingConnection) Topic(org.fusesource.mqtt.client.Topic) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 29 with Topic

use of org.fusesource.mqtt.client.Topic in project camel by apache.

the class MQTTProducerTest method testProduce.

@Test
public void testProduce() throws Exception {
    MQTT mqtt = new MQTT();
    mqtt.setHost(MQTTTestSupport.getHostForMQTTEndpoint());
    final BlockingConnection subscribeConnection = mqtt.blockingConnection();
    subscribeConnection.connect();
    Topic topic = new Topic(TEST_TOPIC, QoS.AT_MOST_ONCE);
    Topic[] topics = { topic };
    subscribeConnection.subscribe(topics);
    final CountDownLatch latch = new CountDownLatch(numberOfMessages);
    Thread thread = new Thread(new Runnable() {

        public void run() {
            for (int i = 0; i < numberOfMessages; i++) {
                try {
                    Message message = subscribeConnection.receive();
                    message.ack();
                    latch.countDown();
                } catch (Exception e) {
                    e.printStackTrace();
                    break;
                }
            }
        }
    });
    thread.start();
    Producer producer = context.getEndpoint("direct:foo").createProducer();
    for (int i = 0; i < numberOfMessages; i++) {
        Exchange exchange = producer.createExchange();
        exchange.getIn().setBody("test message " + i);
        producer.process(exchange);
    }
    latch.await(20, TimeUnit.SECONDS);
    assertTrue("Messages not consumed = " + latch.getCount(), latch.getCount() == 0);
}
Also used : MQTT(org.fusesource.mqtt.client.MQTT) Exchange(org.apache.camel.Exchange) Message(org.fusesource.mqtt.client.Message) Producer(org.apache.camel.Producer) BlockingConnection(org.fusesource.mqtt.client.BlockingConnection) Topic(org.fusesource.mqtt.client.Topic) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 30 with Topic

use of org.fusesource.mqtt.client.Topic in project activemq-artemis by apache.

the class ClusteredQueueMQTTExample method main.

public static void main(final String[] args) throws Exception {
    // Create a new MQTT connection to the broker.  We are not setting the client ID.  The broker will pick one for us.
    System.out.println("Connecting to Artemis using MQTT");
    BlockingConnection connection1 = retrieveMQTTConnection("tcp://localhost:1883");
    System.out.println("Connected to Artemis 1");
    BlockingConnection connection2 = retrieveMQTTConnection("tcp://localhost:1884");
    System.out.println("Connected to Artemis 2");
    // Subscribe to topics
    Topic[] topics = { new Topic("test/+/some/#", QoS.AT_MOST_ONCE) };
    connection1.subscribe(topics);
    connection2.subscribe(topics);
    System.out.println("Subscribed to topics.");
    // Publish Messages
    String payload1 = "This is message 1";
    String payload2 = "This is message 2";
    String payload3 = "This is message 3";
    connection1.publish("test/1/some/la", payload1.getBytes(), QoS.AT_LEAST_ONCE, false);
    connection1.publish("test/1/some/la", payload2.getBytes(), QoS.AT_MOST_ONCE, false);
    connection1.publish("test/1/some/la", payload3.getBytes(), QoS.AT_MOST_ONCE, false);
    System.out.println("Sent messages.");
    Message message1 = connection1.receive(5, TimeUnit.SECONDS);
    Message message2 = connection1.receive(5, TimeUnit.SECONDS);
    Message message3 = connection1.receive(5, TimeUnit.SECONDS);
    Message message4 = connection2.receive(5, TimeUnit.SECONDS);
    Message message5 = connection2.receive(5, TimeUnit.SECONDS);
    Message message6 = connection2.receive(5, TimeUnit.SECONDS);
    System.out.println("Received messages.");
    System.out.println("Broker 1: " + new String(message1.getPayload()));
    System.out.println("Broker 1: " + new String(message2.getPayload()));
    System.out.println("Broker 1: " + new String(message3.getPayload()));
    System.out.println("Broker 2: " + new String(message4.getPayload()));
    System.out.println("Broker 2: " + new String(message5.getPayload()));
    System.out.println("Broker 2: " + new String(message6.getPayload()));
}
Also used : Message(org.fusesource.mqtt.client.Message) BlockingConnection(org.fusesource.mqtt.client.BlockingConnection) Topic(org.fusesource.mqtt.client.Topic)

Aggregations

Topic (org.fusesource.mqtt.client.Topic)52 BlockingConnection (org.fusesource.mqtt.client.BlockingConnection)48 Test (org.junit.Test)41 MQTT (org.fusesource.mqtt.client.MQTT)39 Message (org.fusesource.mqtt.client.Message)36 SimpleString (org.apache.activemq.artemis.api.core.SimpleString)21 AmqpMessage (org.apache.activemq.transport.amqp.client.AmqpMessage)18 BytesMessage (javax.jms.BytesMessage)17 Tracer (org.fusesource.mqtt.client.Tracer)6 MQTTFrame (org.fusesource.mqtt.codec.MQTTFrame)6 ProtocolException (java.net.ProtocolException)5 QoS (org.fusesource.mqtt.client.QoS)4 PUBLISH (org.fusesource.mqtt.codec.PUBLISH)4 Ignore (org.junit.Ignore)4 ArrayList (java.util.ArrayList)3 CountDownLatch (java.util.concurrent.CountDownLatch)3 AddressInfo (org.apache.activemq.artemis.core.server.impl.AddressInfo)3 URI (java.net.URI)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 WildcardConfiguration (org.apache.activemq.artemis.core.config.WildcardConfiguration)2