Skip to content

Instantly share code, notes, and snippets.

@marcgeld
Created March 16, 2016 07:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcgeld/9e2dce79d4717e8e204c to your computer and use it in GitHub Desktop.
Save marcgeld/9e2dce79d4717e8e204c to your computer and use it in GitHub Desktop.
Send a file to ActiveMQ Queue
#! /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