Here is a JMS Producer template to use when I forget how to write them. It uses ActiveMQ as JMS provider and JNDI for connection propereties:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.naming.InitialContext;
public class Producer {
public static void main(String[] args) throws Exception {
InitialContext context = new InitialContext();
ConnectionFactory factory =
(ConnectionFactory) context.lookup("ConnectionFactory");
Connection connection = factory.createConnection();
connection.start();
// Start a non-transacted session for sending messages
Session session =
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = (Destination) context.lookup("test");
MessageProducer consumer = session.createProducer(destination);
// Create text message
Message message = session.createTextMessage("Hello World");
// Send 10 "Hello World" messages to queue
for (int i = 0; i < 10; i++) {
consumer.send(message);
}
// Clean up
session.close();
connection.close();
context.close();
}
}
jndi.properties:
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 # Register some queues in JNDI using the form # queue.[jndiName] = [physicalName] queue.test = NIKLAS.TEST
ActiveMQ Client lib dependency pom:
<dependency>
<groupid>org.apache.activemq</groupid>
<artifactid>activemq-client</artifactid>
<version>5.7.0</version>
</dependency>
Tested on Windows 10, Maven 3.8.4, Java 11.0.18 and ActiveMQ Client 5.7.0
Comments are closed.