
Create a Dynamic Web Project in Eclipse. Let's say the name of the project is rabbitmq. Download amqp-client-<version>.jar and javax.jms-api-<version>.jar and add the JAR files to your build path in Eclipse.
In the left panel of Eclipse, at the name of your project (rabbitmq in this example) > Java Resources > src, create a new package. For the sake of this tutorial, let's name the package com.rabbitmq.demo.
In the package, create a class called consumer.
In consumer.java, add the following markup. In this example, the messages on foo.queue will be consumed.
package com.rabbitmq.demo;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;
import java.net.URISyntaxException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
public class producer {
public void amqConsumer() throws KeyManagementException, NoSuchAlgorithmException, URISyntaxException {
ConnectionFactory cf = new ConnectionFactory();
// use amqp if the server is not using SSL (e.g. http)
cf.setUri("amqp://john.doe:itsasecret@server1.example.com:5671/foo");
// use amqps if the server is using SSL (e.g. https)
cf.setUri("amqps://john.doe:itsasecret@server1.example.com:5671/foo");
Connection conn = null;
try {
System.out.println("Trying to connect to " + conn);
conn = cf.newConnection();
if (conn != null) {
System.out.println("Successfully connected to " + conn);
}
else {
System.out.println("Failed to connect to " + conn);
}
Channel channel = conn.createChannel();
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println("Successfully consumed message '" + message + "' from foo.queue on " + conn);
};
boolean autoAcknowledge = true;
channel.basicConsume("foo.queue", autoAcknowledge, deliverCallback, consumerTag -> { });
}
catch (Exception e) {
e.printStackTrace();
}
}
}
In the left panel of Eclipse, right click on the name of your project (rabbitmq in this example) and select New > JSP File. Select the WebContent folder, give the file a name such as index.jsp, and select Finish.
Add the following to line 1 of the JSP file. This is the combination of the package (com.rabbitmq.main) and the class (consumer.java).
<%@page import="com.rabbitmq.main.consumer"%>
Add the following inside the <body> tags.
- In this example, "consumer" must be used because the name of the class in consumer.java is consumer.
- In this example, "amqConsumer" must be used because the name of the method in consumer.java is amqConsumer.
<body>
<%
consumer jms = new consumer();
jms.amqConsumer();
%>
</body>
Select the green play button in Eclipse should consume the messages on foo.queue.
Likewise, the main RabbitMQ log file should have something like this.
accepting AMQP connection <0.7993.1338> (10.17.115.16:54343 -> 10.122.15.2:5672)
connection <0.7993.1338> (10.17.115.16:54343 -> 10.122.15.2:5672): user 'john.doe' authenticated and granted access to vhost 'foo'
closing AMQP connection <0.21250.1339> (10.17.115.16:54343 -> 10.122.15.2:5672, vhost: 'foo', user: 'john.doe')
Did you find this article helpful?
If so, consider buying me a coffee over at