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);
}
}
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;
}
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);
}
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);
}
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()));
}
Aggregations