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