Updated on 2025-07-31 GMT+08:00

Accessing RabbitMQ on a Client (SSL Disabled)

This section takes the example of a demo of DMS for RabbitMQ to describe how to access a RabbitMQ instance with SSL disabled on a RabbitMQ client for message production and consumption.

Video Tutorial

This video shows how to access a RabbitMQ instance with SSL disabled on a client.

Prerequisites

  • A RabbitMQ instance with SSL disabled has been created following the instructions in Buying a RabbitMQ Instance. The username and password entered in the instance creation have been obtained.
  • Instance Address (Private Network) or Instance Address (Public Network) has been recorded.
  • The network between the client server and the RabbitMQ instance has been established. For details about network requirements, see RabbitMQ Network Connection Requirements.
  • JDK v1.8.111 or later has been installed on the client server, and the JAVA_HOME and PATH environment variables have been configured as follows:

    Add the following lines to the .bash_profile file in the home directory as an authorized user. In this command, /opt/java/jdk1.8.0_151 is the JDK installation path. Change it to the path where you install JDK.

    export JAVA_HOME=/opt/java/jdk1.8.0_151 
    export PATH=$JAVA_HOME/bin:$PATH

    Run the source .bash_profile command for the modification to take effect.

  • In the RabbitMQ instance: A virtual host, exchange, and queue have been created and an exchange-queue binding has been configured.

Accessing the Instance in CLI Mode

The following uses Linux as an example.

  1. Log in to the client server.
  2. Download RabbitMQ-Tutorial.zip sample project code.

    wget https://dms-demo.obs.cn-north-1.myhuaweicloud.com/RabbitMQ-Tutorial.zip

  3. Run the following command to decompress RabbitMQ-Tutorial.zip:

    unzip RabbitMQ-Tutorial.zip

  4. Run the following command to navigate to the RabbitMQ-Tutorial directory, which contains the precompiled JAR file:

    cd RabbitMQ-Tutorial

  5. Create messages using the sample project.

    java -cp .:rabbitmq-tutorial.jar Send {host} {port} {user} {password}
    Table 1 Message production parameters

    Parameter

    Description

    host

    Connection address of the RabbitMQ instance, which is obtained from Prerequisites.

    port

    Port of the RabbitMQ instance. Enter 5672.

    user

    Username for connecting to the RabbitMQ instance, which is obtained from Prerequisites.

    password

    Password for connecting to the RabbitMQ instance, which is obtained from Prerequisites.

    Sample message production:

    [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.xx.40 5672 test Zxxxxxxs
     [x] Sent 'Hello World!'
    [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.xx.40 5672 test Zxxxxxxs
     [x] Sent 'Hello World!'

  6. Retrieve messages using the sample project.

    java -cp .:rabbitmq-tutorial.jar Recv {host} {port} {user} {password}
    Table 2 Message consumption parameters

    Parameter

    Description

    host

    Connection address of the RabbitMQ instance, which is obtained from Prerequisites.

    port

    Port of the RabbitMQ instance. Enter 5672.

    user

    Username for connecting to the RabbitMQ instance, which is obtained from Prerequisites.

    password

    Password for connecting to the RabbitMQ instance, which is obtained from Prerequisites.

    Sample message consumption:

    [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Recv 192.168.xx.40 5672 test Zxxxxxxs
     [*] Waiting for messages. To exit press CTRL+C
     [x] Received 'Hello World!'
     [x] Received 'Hello World!'

    To stop retrieving messages, press Ctrl+C to exit.

Java Sample Code

  • Accessing an instance and producing messages are as follows. Table 3 describes the parameters to be modified.
    ConnectionFactory factory = new ConnectionFactory();
     factory.setHost(host);
     factory.setPort(port);
     factory.setVirtualHost("VHOST_NAME");
    
     factory.setUsername(user);
     factory.setPassword(password);
     Connection connection = factory.newConnection();
     Channel channel = connection.createChannel();
    
     channel.queueDeclare(QUEUE_NAME, false, false, false, null);
    
     String message = "Hello World!";
     channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
     System.out.println(" [x] Sent '" + message + "'");
    
     channel.close();
     connection.close();
    Table 3 Parameters

    Parameter

    Description

    VHOST_NAME

    Name of the virtual host that contains the queue for messages to be sent to

    QUEUE_NAME

    Name of the queue for messages to be sent to

    Hello World!

    The message to be sent in this sample

  • Accessing an instance and consuming messages are as follows. Table 4 describes the parameters to be modified.
    ConnectionFactory factory = new ConnectionFactory();
     factory.setHost(host);
     factory.setPort(port);
     factory.setVirtualHost("VHOST_NAME");
     factory.setUsername(user);
     factory.setPassword(password);
     Connection connection = factory.newConnection();
     Channel channel = connection.createChannel();
    
     channel.queueDeclare(QUEUE_NAME, false, false, false, null);
     System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
    
     Consumer consumer = new DefaultConsumer(channel)
     {
         @Override
         public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
                 byte[] body)
                 throws IOException
         {
             String message = new String(body, "UTF-8");
             System.out.println(" [x] Received '" + message + "'");
         }
     };
     channel.basicConsume(QUEUE_NAME, true, consumer);
    Table 4 Parameters

    Parameter

    Description

    VHOST_NAME

    Name of the virtual host that contains the queue to consume messages

    QUEUE_NAME

    Name of the queue to consume messages