Accessing RabbitMQ on a Client (SSL Enabled)
This section takes the example of a demo of DMS for RabbitMQ to describe how to access a RabbitMQ instance with SSL enabled on a RabbitMQ client for message production and consumption. If SSL is enabled, data will be encrypted before transmission for enhanced security.
Prerequisites
- A RabbitMQ instance with SSL enabled 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
- Log in to the client server.
- Run the following command to download RabbitMQ-Tutorial-SSL.zip (code package of the sample project):
wget https://dms-demo.obs.cn-north-1.myhuaweicloud.com/RabbitMQ-Tutorial-SSL.zip
- Run the following command to decompress RabbitMQ-Tutorial-SSL.zip:
unzip RabbitMQ-Tutorial-SSL.zip
- Run the following command to navigate to the RabbitMQ-Tutorial-SSL directory, which contains the precompiled JAR file:
cd RabbitMQ-Tutorial-SSL
- Produce messages using the sample project.
java -cp .:rabbitmq-tutorial-sll.jar Send {host} {port} {user} {password}
Parameter description:
- {host}: connection address obtained in Prerequisites
- {port}: port of the RabbitMQ instance. Enter 5671.
- {user}: username obtained in Prerequisites
- {password}: password obtained in Prerequisites
Figure 1 Sample project for message creation
- Consume messages using the sample project.
java -cp .:rabbitmq-tutorial-sll.jar Recv {host} {port} {user} {password}
Parameter description:
- {host}: connection address obtained in Prerequisites
- {port}: port of the RabbitMQ instance. Enter 5671.
- {user}: username obtained in Prerequisites
- {password}: password obtained in Prerequisites
Figure 2 Sample project for message retrieval
To stop retrieving messages, press Ctrl+C to exit.
Java Sample Code
- Accessing an instance and producing messages
- 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
ConnectionFactory factory = new ConnectionFactory(); factory.setHost(host); factory.setPort(port); factory.setVirtualHost("VHOST_NAME"); factory.setUsername(user); factory.setPassword(password); factory.useSslProtocol(); 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();
- Accessing an instance and consuming messages
- VHOST_NAME: name of the virtual host that contains the queue to consume messages
- QUEUE_NAME: name of the queue to consume messages
ConnectionFactory factory = new ConnectionFactory(); factory.setHost(host); factory.setPort(port); factory.setVirtualHost("VHOST_NAME"); factory.setUsername(user); factory.setPassword(password); factory.useSslProtocol(); 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);
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot