public static void main(String[] args) throws InterruptedException { String broker = args[0]; String topic = args[1]; String queue = args[2]; Properties properties = new Properties(); try { boolean validBroker = true; if (broker.equalsIgnoreCase("qpid")) { properties.load(ClassLoader.getSystemClassLoader().getResourceAsStream("qpid.properties")); } else if (broker.equalsIgnoreCase("activemq")) { properties.load( ClassLoader.getSystemClassLoader().getResourceAsStream("activemq.properties")); } else if (broker.equalsIgnoreCase("mb")) { properties.load(ClassLoader.getSystemClassLoader().getResourceAsStream("mb.properties")); } else { validBroker = false; log.error("Entered broker is invalid! "); } if (validBroker) { if (topic == null && queue == null) { log.error("Enter topic value or queue value! "); } else if (topic != null) { Context context = new InitialContext(properties); TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) context.lookup("ConnectionFactory"); TopicConsumer topicConsumer = new TopicConsumer(topicConnectionFactory, topic); Thread consumerThread = new Thread(topicConsumer); log.info("Starting" + broker + "consumerTopic thread..."); consumerThread.start(); Thread.sleep(5 * 60000); log.info("Shutting down " + broker + " consumerTopic..."); topicConsumer.shutdown(); } else { Context context = new InitialContext(properties); QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) context.lookup("ConnectionFactory"); QueueConsumer queueConsumer = new QueueConsumer(queueConnectionFactory, queue); Thread consumerThread = new Thread(queueConsumer); log.info("Starting" + broker + "consumerQueue thread..."); consumerThread.start(); Thread.sleep(5 * 60000); log.info("Shutting down " + broker + " consumerQueue..."); queueConsumer.shutdown(); } } } catch (IOException e) { log.error("Cannot read properties file from resources. " + e.getMessage(), e); } catch (NamingException e) { log.error("Invalid properties in the properties " + e.getMessage(), e); } }
public <K> void publish( QueueConsumer<K> queueConsumer, Map<String, String> headers, Class<K> clazz, K pojo, long timeSinceEpoch) throws KafkaException { QueueItem inner = null; try { inner = QueueItem.build(mapper, headers, clazz, pojo); } catch (IOException e) { logger.error("Unable to map/ build queueItem", e); throw new KafkaException("Unable to map/ build queueItem", e); } QueueItem outer = new QueueItem(); outer.setClassName(this.getClass().getCanonicalName()); outer.setTryNumber(0); outer.setJsonObject( Json.createObjectBuilder() .add(QUEUE, queueConsumer.queue()) .add(PAYLOAD, Json.createReader(new StringReader(inner.toString())).read()) .build()); logger.debug("queuing delayQ message: {}", outer); try { delayQ.put(outer.toString(), timeSinceEpoch); } catch (Exception e) { logger.error("Unable to set timer for delayQ", e); throw new KafkaException("Unable to set timer for delayQ", e); } }
public <K> void publish( QueueConsumer<K> queueConsumer, Map<String, String> headers, Class<K> clazz, K pojo) throws KafkaException { QueueItem queueItem = null; try { queueItem = QueueItem.build(mapper, headers, clazz, pojo); } catch (IOException e) { logger.error("Unable to map/ build queueItem", e); throw new KafkaException("Unable to map/ build queueItem", e); } String queue = queueConsumer.queue(); logger.debug("queue: {}, message: {}", queue, queueItem); kafkaClient.sendMessage(new KafkaMessage(queue, queueItem.toString())); }
public QueueEntry findEarliestAssignedAvailableEntry(QueueConsumer<?> sub) { EntryFinder visitor = new EntryFinder(sub); sub.getQueue().visit(visitor); return visitor.getEntry(); }