不使用SSL證書連接
更新時間 2024-01-17 13:48:48
最近更新時間: 2024-01-17 13:48:48
分享文章
本文主要介紹不使用SSL證書連接RabbitMQ實例。
RabbitMQ實例兼容開源協議,請參考RabbitMQ官網提供的不同語言的連接和使用向導:。
介紹VPC內訪問與使用RabbitMQ方法,假設RabbitMQ客戶端部署在彈性云主機上。
前提條件
- 參考創建實例章節創建RabbitMQ實例,并記錄創建時輸入的用戶名和密碼。
- 創建完成后,單擊實例名稱,查看并記錄實例詳情中的“連接地址”。
- 已創建彈性云主機,并且彈性云主機的VPC、子網、安全組與RabbitMQ實例的VPC、子網、安全組保持一致。
- 已完成JDK安裝及環境變量配置。
命令模式連接實例
以下操作命令以Linux系統為例進行說明:
1、下載RabbitMQ-Tutorial.zip示例工程代碼。
2、解壓RabbitMQ-Tutorial.zip壓縮包。
$ unzip RabbitMQ-Tutorial.zip
3、進入RabbitMQ-Tutorial目錄,該目錄下包含預編譯好的jar文件。
$ cd RabbitMQ-Tutorial
4、運行生產消息示例。
$ java -cp .:rabbitmq-tutorial.jar Send host port user password
其中,host表示RabbitMQ實例的連接地址,port為RabbitMQ實例的監聽端口(默認為5672),user表示RabbitMQ用戶名,password表示用戶名對應的密碼。
圖1 運行生產消息示例

使用Ctrl+C命令退出。
5、運行消費消息示例。
$ java -cp .:rabbitmq-tutorial.jar Recv host port user password
其中,host表示RabbitMQ實例的連接地址,port為RabbitMQ實例的監聽端口(默認為5672),user表示RabbitMQ用戶名,password表示用戶名對應的密碼。
圖2 運行消費消息示例

如需停止消費使用Ctrl+C命令退出。
示例代碼(Java)
連接實例并生產消息
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(port);
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();
連接實例并消費消息
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(port);
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);