Hola a todos, den algunos básicos sobre ActiveMQ con JMS para novatos. Y pasos de configuración también.ActiveMQ y JMS: pasos básicos para principiantes
Respuesta
Vamos a crear una aplicación basada en consola utilizando multihebra. Entonces crea un proyecto de Java para la aplicación de la consola.
Ahora siga estos pasos ..........
Añadir javax.jms.jar, activemq-all-5.3.0.jar, log4j-1.2.15.jar a tu biblioteca de proyectos (se puede descargar todos los archivos jar por encima de http://www.jarfinder.com/.
crear una nomenclatura de archivos jndi.properties y pegar estos textos siguientes .. (deatils para jndi.properties sólo Google se)
# START SNIPPET: jndi
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
# use the following property to configure the default connector
java.naming.provider.url = tcp://localhost:61616
# use the following property to specify the JNDI name the connection factory
# should appear as.
#connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry
connectionFactoryNames = connectionFactory, queueConnectionFactory, topicConnectionFactry
# register some queues in JNDI using the form
# queue.[jndiName] = [physicalName]
queue.MyQueue = example.MyQueue
# register some topics in JNDI using the form
# topic.[jndiName] = [physicalName]
topic.MyTopic = example.MyTopic
# END SNIPPET: jndi
Añadir JMSConsumer.java
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class JMSConsumer implements Runnable{
private static final Log LOG = LogFactory.getLog(JMSConsumer.class);
public void run() {
Context jndiContext = null;
ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session = null;
MessageConsumer consumer = null;
Destination destination = null;
String sourceName = null;
final int numMsgs;
sourceName= "MyQueue";
numMsgs = 1;
LOG.info("Source name is " + sourceName);
/*
* Create a JNDI API InitialContext object
*/
try {
jndiContext = new InitialContext();
} catch (NamingException e) {
LOG.info("Could not create JNDI API context: " + e.toString());
System.exit(1);
}
/*
* Look up connection factory and destination.
*/
try {
connectionFactory = (ConnectionFactory)jndiContext.lookup("queueConnectionFactory");
destination = (Destination)jndiContext.lookup(sourceName);
} catch (NamingException e) {
LOG.info("JNDI API lookup failed: " + e);
System.exit(1);
}
try {
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
consumer = session.createConsumer(destination);
connection.start();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MessageListener listener = new MyQueueMessageListener();
consumer.setMessageListener(listener);
//Let the thread run for some time so that the Consumer has suffcient time to consume the message
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (JMSException e) {
LOG.info("Exception occurred: " + e);
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
}
}
}
}
}
Agregar JMSProducer.java
import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class JMSProducer implements Runnable{
private static final Log LOG = LogFactory.getLog(JMSProducer.class);
public JMSProducer() {
}
//Run method implemented to run this as a thread.
public void run(){
Context jndiContext = null;
ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session = null;
Destination destination = null;
MessageProducer producer = null;
String destinationName = null;
final int numMsgs;
destinationName = "MyQueue";
numMsgs = 5;
LOG.info("Destination name is " + destinationName);
/*
* Create a JNDI API InitialContext object
*/
try {
jndiContext = new InitialContext();
} catch (NamingException e) {
LOG.info("Could not create JNDI API context: " + e.toString());
System.exit(1);
}
/*
* Look up connection factory and destination.
*/
try {
connectionFactory = (ConnectionFactory)jndiContext.lookup("queueConnectionFactory");
destination = (Destination)jndiContext.lookup(destinationName);
} catch (NamingException e) {
LOG.info("JNDI API lookup failed: " + e);
System.exit(1);
}
/*
* Create connection. Create session from connection; false means
* session is not transacted.create producer, set the text message, set the co-relation id and send the message.
*/
try {
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
producer = session.createProducer(destination);
TextMessage message = session.createTextMessage();
for (int i = 0; i
Añadir MyQueueMessageListener.java
import java.io.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.jms.*;
public class MyQueueMessageListener implements MessageListener {
private static final Log LOG = LogFactory.getLog(MyQueueMessageListener.class);
/**
*
*/
public MyQueueMessageListener() {
// TODO Auto-generated constructor stub
}
/** (non-Javadoc)
* @see javax.jms.MessageListener#onMessage(javax.jms.Message)
* This is called on receving of a text message.
*/
public void onMessage(Message arg0) {
LOG.info("onMessage() called!");
if(arg0 instanceof TextMessage){
try {
//Print it out
System.out.println("Recieved message in listener: " + ((TextMessage)arg0).getText());
System.out.println("Co-Rel Id: " + ((TextMessage)arg0).getJMSCorrelationID());
try {
//Log it to a file
BufferedWriter outFile = new BufferedWriter(new FileWriter("MyQueueConsumer.txt"));
outFile.write("Recieved message in listener: " + ((TextMessage)arg0).getText());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("~~~~Listener : Error in message format~~~~");
}
}
}
Añadir SimpleApp.java
public class SimpleApp {
//Run the producer first, then the consumer
public static void main(String[] args) throws Exception {
runInNewthread(new JMSProducer());
runInNewthread(new JMSConsumer());
}
public static void runInNewthread(Runnable runnable) {
Thread brokerThread = new Thread(runnable);
brokerThread.setDaemon(false);
brokerThread.start();
}
}
Ahora ru n Clase SimpleApp.java.
Todo lo mejor. Feliz codificación.
hola, gracias por su respuesta. ¿Podría por favor arrojar algo de luz sobre esto y ayudarme? Gracias por tu tiempo. – Kumar
Aquí es una prueba de junio simple para ActiveMQ y Apache Camel. Estas dos tecnologías funcionan muy bien juntas.
Si desea más detalles sobre el código, se puede encontrar un post en mi blog:
http://ignaciosuay.com/unit-testing-active-mq/
public class ActiveMQTest extends CamelTestSupport {
@Override
protected CamelContext createCamelContext() throws Exception {
CamelContext camelContext = super.createCamelContext();
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
camelContext.addComponent("activemq", jmsComponentClientAcknowledge(connectionFactory));
return camelContext;
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("mina:tcp://localhost:6666?textline=true&sync=false")
.to("activemq:processHL7");
from("activemq:processHL7")
.to("mock:end");
}
};
}
@Test
public void testSendHL7Message() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:end");
String m = "MSH|^~\\&|hl7Integration|hl7Integration|||||ADT^A01|||2.5|\r" +
"EVN|A01|20130617154644\r" +
"PID|1|465 306 5961||407623|Wood^Patrick^^^MR||19700101|1|\r" +
"PV1|1||Location||||||||||||||||261938_6_201306171546|||||||||||||||||||||||||20130617134644|";
mock.expectedBodiesReceived(m);
template.sendBody("mina:tcp://localhost:6666?textline=true&sync=false", m);
mock.assertIsSatisfied();
}
- 1. Excepción JMS y ActiveMQ
- 2. SOAP sobre JMS para principiantes
- 3. ActiveMQ JMS ping
- 4. JMS Consumidor autónomo con ActiveMQ y Spring
- 5. Pruebas unitarias con JMS (ActiveMQ)
- 6. ActiveMQ y otra implementación de FOSS JMS para Android
- 7. Pasos básicos para usar MQTT en android
- 8. Evitar mensajes duplicados en JMS/ActiveMQ
- 9. Pasos básicos para la metodología de desarrollo de software Agile
- 10. ¿Cuáles son las dependencias correctas de Maven para usar Spring JMS y ActiveMQ?
- 11. Principiantes básicos en Java: ¿qué significa 'argumentos' en Java
- 12. configurar JMX para ActiveMQ para acceso remoto
- 13. ¿Libro para principiantes para .NET y C#?
- 14. ActiveMQ Sesión AUTO_ACKNOWLEDGE impacto propiedad
- 15. IIS 7: Tutorial para principiantes
- 16. Awesome ASP.NET y C# tutoriales para principiantes
- 17. JMS y JMX tutoriales?
- 18. ActiveMQ destinationPolicy y SystemUsage Configuration
- 19. Corredor liviano JMS
- 20. AlarmClock para principiantes - Android
- 21. node.js para principiantes tutoriales?
- 22. R .Internal para principiantes
- 23. LINQ para principiantes
- 24. Preguntas para principiantes: Wakelocks
- 25. Java para principiantes
- 26. Jboss para principiantes
- 27. Subversion para principiantes
- 28. Cómo usar la Transformación de mensaje JMS en ActiveMQ con Stomp/JSON
- 29. Práctica para principiantes Python?
- 30. presentación Clojure para principiantes?
Para bajar los votantes: Esta pregunta se hizo antes de muchos años, sé que esto es una pregunta de baja calidad, pero no merece votos abajo. Al menos agrega tu comentario aquí. No se oculte ni baje de la puerta trasera. –
¿Tiene alguna guía paso a paso para la instalación de ActiveMQ con el ejemplo? –
@SelvamR No ... pero agregué la respuesta a continuación que puede ayudarlo a hacerlo ... –