Subscribe to RabbitMQ - Sample Code

Every queue within Rabbit MQ for customers requires a subscription over the customer's end to monitor the messages that get notified over the queue. Here is a simple Java-based Rabbit MQ subscription source code showing how simple it is to subscribe over a certain queue. Please refer Rabbit MQ Publish/Subscribe for additional details.

Java Rabbit MQ Subscription

Here is a sample code that when executed, pulls the available messages in the queue. Comments are added for code explanation.

package com.essdocs.sample;

// Rabbit MQ Client Java based class
import com.rabbitmq.client.*;

public class AmqReceiver {

  // Setting up primary Rabbit MQ based details including Host Name, Virtual Host, Username, Password, Port and Queue name
	private final static String HOST_NAME = "${HOST_NAME}";
	private final static String VIRTUAL_HOST = "${VIRTUAL_HOST_UUID}";
	private final static String AMQ_USERNAME = "${USERNAME}";
	private final static String AMQ_PASSWORD = "${PASSWORD}";
	private final static int AMQ_PORT = ${HOST_NAME};//Usually 443 if SLL is used
	private final static String QUEUE_NAME = "${QUEUE_NAME}";

	public static void main(String[] args) {
		// Calling Recieve Message method with queue name as an argument
	public static void receiveMessage(String queueName) {
    // Creating ConnectionFactory and setting up Queue parameters within it
		ConnectionFactory factory = new ConnectionFactory();
		try {
      // Indicates factory to be using SSL for secure data transmission
		catch (Exception e) {
			System.out.println("AWS MQ SSL connection error " + e.getMessage());

		try {
			Connection connection = factory.newConnection();
			Channel channel = connection.createChannel();
      // Setting up queue object to the Channel Factory
			channel.queueDeclare(queueName, false, false, false, null);
      // AutoAck if set to false, will note remove the message from the queue after viewing
      boolean autoAck = false;
      // Retrieve MQ messages
			channel.basicConsume(queueName, autoAck, "myConsumerTag",
					new DefaultConsumer(channel) {
						public void handleDelivery(String consumerTag,
												   Envelope envelope,
												   AMQP.BasicProperties properties,
												   byte[] body)
								throws IOException {
							long deliveryTag = envelope.getDeliveryTag();
              // Printing queue message over the console
							System.out.println("AWS MQ Received Message Body: " + new String(body));
							// (process the message components here ...)
							channel.basicAck(deliveryTag, false);
		catch (Exception e) {
			System.out.println("Error when receiving the message : " + e.getMessage());

Successful execution of the above code snippet fetches the available messages from the queue and will display the messages in the queue. Here is what the output looks like.


Additional Samples

Please refer for additional sample codes to subscribe to messages from the designated Rabbit MQs.