Chapter 5. Examples
This chapter demonstrates the use of AMQ JMS Pool through example programs.
5.1. Prerequisites
- To build the examples, Maven must be configured to use the Red Hat repository or a local repository.
- To run the examples, your system must have a running and configured broker.
5.2. Establishing a connection
This example creates a new connection pool, binds it to a connection factory, and uses the pool to create a new connection.
Example: Establishing a connection - Connect.java
package net.example;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import org.apache.qpid.jms.JmsConnectionFactory;
import org.messaginghub.pooled.jms.JmsPoolConnectionFactory;
public class Connect {
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.err.println("Usage: Connect <connection-uri>");
System.exit(1);
}
String connUri = args[0];
ConnectionFactory factory = new JmsConnectionFactory(connUri);
JmsPoolConnectionFactory pool = new JmsPoolConnectionFactory();
try {
pool.setConnectionFactory(factory);
Connection conn = pool.createConnection();
conn.start();
try {
System.out.println("CONNECT: Connected to '" + connUri + "'");
} finally {
conn.close();
}
} finally {
pool.stop();
}
}
}
5.3. Configuring the pool
This example demonstrates setting connection and session configuration options.
Example: Configuring the pool - ConnectWithConfiguration.java
package net.example;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import org.apache.qpid.jms.JmsConnectionFactory;
import org.messaginghub.pooled.jms.JmsPoolConnectionFactory;
public class ConnectWithConfiguration {
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.err.println("Usage: ConnectWithConfiguration <connection-uri>");
System.exit(1);
}
String connUri = args[0];
ConnectionFactory factory = new JmsConnectionFactory(connUri);
JmsPoolConnectionFactory pool = new JmsPoolConnectionFactory();
try {
pool.setConnectionFactory(factory);
// Set the max connections per user to a higher value
pool.setMaxConnections(5);
// Create a MessageProducer for each createProducer() call
pool.setUseAnonymousProducers(false);
Connection conn = pool.createConnection();
conn.start();
try {
System.out.println("CONNECT: Connected to '" + connUri + "'");
} finally {
conn.close();
}
} finally {
pool.stop();
}
}
}
5.4. Running the examples
To compile and run the example programs, use the following procedure.
Procedure
-
Create a new project directory. This is referred to as
<project-dir>in the steps that follow. Copy the example Java listings to the following locations:
<project-dir>/src/main/java/net/example/Connect.java <project-dir>/src/main/java/net/example/ConnectWithConfiguration.java
Use a text editor to create a new
<project-dir>/pom.xmlfile. Add the following XML to it:<project> <modelVersion>4.0.0</modelVersion> <groupId>net.example</groupId> <artifactId>example</artifactId> <version>1.0.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.messaginghub</groupId> <artifactId>pooled-jms</artifactId> <version>1.0.1.redhat-00002</version> </dependency> <dependency> <groupId>org.apache.qpid</groupId> <artifactId>qpid-jms-client</artifactId> <version>0.34.0.redhat-00002</version> </dependency> </dependencies> </project>Change to the project directory and use the
mvncommand to compile the program.mvn clean package dependency:copy-dependencies -DincludeScope=runtime -DskipTests
The addition of
dependency:copy-dependenciesresults in the dependencies being copied into thetarget/dependencydirectory.Use the
javacommand to run the program.On Linux or UNIX:
java -cp "target/classes:target/dependency/*" net.example.Connect amqp://localhost
On Windows:
java -cp "target\classes;target\dependency\*" net.example.Connect amqp://localhost
These sample commands run the Connect example. To run another example, replace Connect with the class name of your desired example.
Running the Connect example on Linux results in the following output:
$ java -cp "target/classes:target/dependency/*" net.example.Connect amqp://localhost CONNECT: Connected to 'amqp://localhost'

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.