Created
March 16, 2016 07:23
-
-
Save marcgeld/9e2dce79d4717e8e204c to your computer and use it in GitHub Desktop.
Send a file to ActiveMQ Queue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env groovy -cp ./activemq-client-5.12.0.jar:./logback-classic-1.1.3.jar | |
@Grab(group='ch.qos.logback', module='logback-classic', version='1.1.5') | |
@Grab(group='ch.qos.logback', module='logback-core', version='1.1.5') | |
@Grab(group='org.slf4j', module='slf4j-api', version='1.7.16') | |
@Grab(group='org.apache.activemq', module='activemq-core', version='5.7.0') | |
@Grab(group='org.apache.qpid', module='qpid-amqp-1-0-client-jms', version='0.30') | |
@Grab(group='commons-io', module='commons-io', version='1.2') | |
@Grab(group='org.apache.geronimo.specs', module='geronimo-jms_1.1_spec', version='1.1.1') | |
import javax.jms.* | |
import javax.naming.* | |
import groovy.xml.* | |
import groovy.text.* | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import java.nio.charset.StandardCharsets | |
import ch.qos.logback.core.*; | |
import ch.qos.logback.core.encoder.*; | |
import ch.qos.logback.core.read.*; | |
import ch.qos.logback.core.rolling.*; | |
import ch.qos.logback.core.status.*; | |
import ch.qos.logback.classic.net.*; | |
import ch.qos.logback.classic.encoder.*; | |
import static ch.qos.logback.classic.Level.*; | |
import org.apache.activemq.ActiveMQConnectionFactory | |
import org.apache.qpid.amqp_1_0.jms.impl.ConnectionFactoryImpl | |
Logger logger = LoggerFactory.getLogger(this.getClass()); | |
def appName = this.getClass().getName() | |
def cli = new CliBuilder(usage:"${appName} --url tcp://localhost:61616 --queue VGRICC.ICORE.LOG --file <path_to_file>") | |
cli.with { | |
u(longOpt: 'url', 'Host url', args: 1, required: true) | |
q(longOpt: 'queue', 'ActiveMQ Queue', args: 1, required: true) | |
f(longOpt: 'file', 'File to Send', args: 1, required: true) | |
h(longOpt: 'help', 'Print help', required: false) | |
} | |
def options = cli.parse(args) | |
if (!options) return | |
if (options.h) cli.usage() | |
String serverlUrl = options.u | |
String queueName = options.q | |
File inputFile = new File(options.f) | |
//ISO Date e.g. 2016-03-09T00:01:01 | |
//def isoDateTime = new Date().format("yyyy-MM-dd'T'HH:mm:ss'Z'", TimeZone.getTimeZone("UTC")) | |
// ...and template | |
def binding = [isoDateTime: new Date().format("yyyy-MM-dd'T'HH:mm:ss")] | |
def engine = new SimpleTemplateEngine() | |
def templateText = engine.createTemplate(inputFile.text).make(binding) | |
logger.info("Server: ${serverlUrl}") | |
logger.info("ActiveMQ Queue Name: ${queueName}") | |
//logger.info("Message ${inputFile.text}") | |
logger.info("------------------------------------------") | |
logger.info("Message ${templateText}") | |
logger.info("------------------------------------------") | |
// ActiveMQ | |
def connectionFactory = new ActiveMQConnectionFactory( serverlUrl ) | |
def connection = connectionFactory.createConnection() | |
def session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE ) | |
//byte[] messageBytes = inputFile.text.getBytes( StandardCharsets.UTF_8 ) | |
connection.start() | |
MessageProducer messageProducer = session.createProducer(session.createQueue( queueName )) | |
// -- Text Message | |
TextMessage textMessage = session.createTextMessage() | |
textMessage.setText(inputFile.text) | |
// -- BytesMessage | |
//BytesMessage byteMessage = session.createBytesMessage() | |
//byteMessage.writeBytes( messageBytes ); | |
// enrich headers. | |
//CONF.each{ key, value -> | |
// bytesMsg.setObjectProperty((String) key, value); | |
//} | |
messageProducer.send( textMessage ); | |
//messageProducer.send( byteMessage ); | |
session.close(); | |
connection.close(); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment