My Blog

My WordPress Blog

My Blog

My WordPress Blog

Subscriber Application

Now let’s create a subscriber application which will receive message from the RabbitMQ Topic.

Create Project

Using eclipse, select File → New → Maven Project. Tick the Create a simple project(skip archetype selection) and click Next.

Enter the details, as shown below −

  • groupId − com.tutorialspoint
  • artifactId − subscriber
  • version − 0.0.1-SNAPSHOT
  • name − RabbitMQ Subscriber

Click on Finish button and a new project will be created.

pom.xml

Now update the content of pom.xml to include dependencies for RabbitMQ.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint.activemq</groupId>
   <artifactId>subscriber</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>RabbitMQ Subscriber</name>
   <dependencies>
  &lt;dependency&gt;
     &lt;groupId&gt;com.rabbitmq&lt;/groupId&gt;
     &lt;artifactId&gt;amqp-client&lt;/artifactId&gt;
     &lt;version&gt;5.14.2&lt;/version&gt;
  &lt;/dependency&gt;
  &lt;dependency&gt;
     &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
     &lt;artifactId&gt;slf4j-api&lt;/artifactId&gt;
     &lt;version&gt;1.7.26&lt;/version&gt;
  &lt;/dependency&gt;
  &lt;dependency&gt;
     &lt;groupId&gt;org.slf4j&lt;/groupId&gt;
     &lt;artifactId&gt;slf4j-simple&lt;/artifactId&gt;
     &lt;version&gt;1.7.26&lt;/version&gt;
  &lt;/dependency&gt;
</dependencies> </project>

Now create a Subscriber class which will receive message from the RabbitMQ Queue.

package com.tutorialspoint.rabbitmq;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;

public class Subscriber {
   private static String EXCHANGE = "MyExchange";
   public static void main(String[] args) throws IOException, TimeoutException {
  ConnectionFactory factory = new ConnectionFactory();
  factory.setHost("localhost");
  Connection connection = factory.newConnection();
  Channel channel = connection.createChannel();
  channel.exchangeDeclare(EXCHANGE, "fanout");
  String queueName = channel.queueDeclare().getQueue();
  channel.queueBind(queueName, EXCHANGE, "");
  System.out.println("Waiting for messages. To exit press CTRL+C");
  DeliverCallback deliverCallback = (consumerTag, delivery) -&gt; {
     String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
     System.out.println("Received '" + message + "'");
  };
  channel.basicConsume(queueName, true, deliverCallback, consumerTag -&gt; { });
} }

Subscriber class creates a connection, creates a channel, declares the exchange, create a random queue and binds it with the exchange and then receives message from topic if there is any. Press Ctrl + C to terminate else it will keep polling queue for messages.

Subscriber Application

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top