use of org.apache.storm.tuple.ITuple in project storm by apache.
the class StormMqttIntegrationTest method buildMqttTopology.
public StormTopology buildMqttTopology() {
TopologyBuilder builder = new TopologyBuilder();
MqttOptions options = new MqttOptions();
options.setTopics(Arrays.asList(TEST_TOPIC));
options.setCleanConnection(false);
TestSpout spout = new TestSpout(new StringMessageMapper(), options);
MqttBolt bolt = new MqttBolt(options, new MqttTupleMapper() {
@Override
public MqttMessage toMessage(ITuple tuple) {
LOG.info("Received: {}", tuple);
return new MqttMessage(RESULT_TOPIC, RESULT_PAYLOAD.getBytes());
}
});
builder.setSpout("mqtt-spout", spout);
builder.setBolt("mqtt-bolt", bolt).shuffleGrouping("mqtt-spout");
return builder.createTopology();
}
use of org.apache.storm.tuple.ITuple in project storm by apache.
the class ExampleJmsTopology method main.
@SuppressWarnings("serial")
public static void main(String[] args) throws Exception {
// JMS Queue Provider
JmsProvider jmsQueueProvider = new SpringJmsProvider("jms-activemq.xml", "jmsConnectionFactory", "notificationQueue");
// JMS Topic provider
JmsProvider jmsTopicProvider = new SpringJmsProvider("jms-activemq.xml", "jmsConnectionFactory", "notificationTopic");
// JMS Producer
JmsTupleProducer producer = new JsonTupleProducer();
// JMS Queue Spout
JmsSpout queueSpout = new JmsSpout();
queueSpout.setJmsProvider(jmsQueueProvider);
queueSpout.setJmsTupleProducer(producer);
queueSpout.setJmsAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
// allow multiple instances
queueSpout.setDistributed(true);
TopologyBuilder builder = new TopologyBuilder();
// spout with 5 parallel instances
builder.setSpout(JMS_QUEUE_SPOUT, queueSpout, 5);
// intermediate bolt, subscribes to jms spout, anchors on tuples, and auto-acks
builder.setBolt(INTERMEDIATE_BOLT, new GenericBolt("INTERMEDIATE_BOLT", true, true, new Fields("json")), 3).shuffleGrouping(JMS_QUEUE_SPOUT);
// bolt that subscribes to the intermediate bolt, and auto-acks
// messages.
builder.setBolt(FINAL_BOLT, new GenericBolt("FINAL_BOLT", true, true), 3).shuffleGrouping(INTERMEDIATE_BOLT);
// bolt that subscribes to the intermediate bolt, and publishes to a JMS Topic
JmsBolt jmsBolt = new JmsBolt();
jmsBolt.setJmsProvider(jmsTopicProvider);
// anonymous message producer just calls toString() on the tuple to create a jms message
jmsBolt.setJmsMessageProducer(new JmsMessageProducer() {
@Override
public Message toMessage(Session session, ITuple input) throws JMSException {
System.out.println("Sending JMS Message:" + input.toString());
TextMessage tm = session.createTextMessage(input.toString());
return tm;
}
});
builder.setBolt(JMS_TOPIC_BOLT, jmsBolt).shuffleGrouping(INTERMEDIATE_BOLT);
// JMS Topic spout
JmsSpout topicSpout = new JmsSpout();
topicSpout.setJmsProvider(jmsTopicProvider);
topicSpout.setJmsTupleProducer(producer);
topicSpout.setJmsAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
topicSpout.setDistributed(false);
builder.setSpout(JMS_TOPIC_SPOUT, topicSpout);
builder.setBolt(ANOTHER_BOLT, new GenericBolt("ANOTHER_BOLT", true, true), 1).shuffleGrouping(JMS_TOPIC_SPOUT);
Config conf = new Config();
if (args.length > 0) {
conf.setNumWorkers(3);
StormSubmitter.submitTopology(args[0], conf, builder.createTopology());
} else {
conf.setDebug(true);
try (LocalCluster cluster = new LocalCluster();
LocalTopology topo = cluster.submitTopology("storm-jms-example", conf, builder.createTopology())) {
Utils.sleep(60000);
}
}
}
use of org.apache.storm.tuple.ITuple in project storm by apache.
the class SolrFieldsMapper method toSolrRequest.
@Override
public SolrRequest toSolrRequest(List<? extends ITuple> tuples) throws SolrMapperException {
List<SolrInputDocument> docs = new LinkedList<>();
for (ITuple tuple : tuples) {
docs.add(buildDocument(tuple));
}
UpdateRequest request = new UpdateRequest();
request.add(docs);
log.debug("Created SolrRequest with content: {}", docs);
return request;
}
use of org.apache.storm.tuple.ITuple in project storm by apache.
the class SolrJsonMapper method getJsonFromTuples.
// Builds a JSON list
private String getJsonFromTuples(List<? extends ITuple> tuples) throws SolrMapperException {
final StringBuilder jsonListBuilder = new StringBuilder("[");
for (ITuple tuple : tuples) {
final String json = getJsonFromTuple(tuple);
jsonListBuilder.append(json).append(",");
}
jsonListBuilder.setCharAt(jsonListBuilder.length() - 1, ']');
return jsonListBuilder.toString();
}
Aggregations