Chapter 3. Getting started
This chapter guides you through the steps to set up your environment and run a simple messaging program.
3.1. Prerequisites
- To build the example, Maven must be configured to use the Red Hat repository or a local repository.
-
You must have a message broker listening for connections on
localhost
. It must have anonymous access enabled. For more information, see Starting the broker. -
You must have a queue named
example
. For more information, see Creating a queue.
3.2. Running Hello World
The Hello World example creates a connection to the broker, sends a message containing a greeting to the example
queue, and receives it back. On success, it prints the received message to the console.
Example: Sending and receiving "Hello World!" - HelloWorld.java
package net.example; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.jms.annotation.EnableJms; import org.springframework.jms.annotation.JmsListener; import org.springframework.jms.core.JmsTemplate; @EnableJms @SpringBootApplication public class HelloWorld implements CommandLineRunner { @Autowired private JmsTemplate jmsTemplate; public static void main(String[] args) { SpringApplication.run(HelloWorld.class, args); } @Override public void run(String... strings) throws Exception { sendMessage("Hello World!"); } public void sendMessage(String text) { System.out.println(String.format("Sending '%s'", text)); this.jmsTemplate.convertAndSend("example", text); } @JmsListener(destination = "example") public void receiveMessage(String text) { System.out.println(String.format("Received '%s'", text)); } }
Running the example
To compile and run the example program, 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 listing to the following location:
<project-dir>/src/main/java/net/example/HelloWorld.java
Use a text editor to create a new
<project-dir>/pom.xml
file. 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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.2.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.amqphub.spring</groupId> <artifactId>amqp-10-jms-spring-boot-starter</artifactId> <version>2.3.3.redhat-00001</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Change to the project directory and use the
mvn
command to compile the program.$ mvn clean package
Use the
java
command to run the program.$ java -jar target/example-1.0.0-SNAPSHOT.jar
Running the Hello World example results in the following console output:
$ java -jar target/example-1.0.0-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.5.RELEASE) [...] 2018-11-05 16:21:09.849 INFO 14805 --- [main] net.example.HelloWorld: Started HelloWorld in 1.074 seconds (JVM running for 1.38) Sending 'Hello World!' Received 'Hello World!'
3.3. Additional examples
More example programs are available from the AMQP 1.0 JMS Spring Boot project and the Spring project.