## 使用java
發送單個消息的生產者,以及接收消息并將其打印出來的消費者。
發布者將連接到RabbitMQ,發送一條消息,然后退出。

#### 1.添加maven的包
```
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.0.0</version>
</dependency>
```
#### 2.編寫生產者者代碼
```
public class Send {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws Exception {
// 創建一個到服務器的連接 連接抽象出套接字連接,并為我們處理協議版本協商和認證等
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
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();
}
}
```
#### 3.編寫消費者代碼
```
public class Recv {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
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);
}
}
```
### 啟動順序
消費者將通過RabbitMQ打印從發布者處獲得的消息。消費者將繼續運行,等待消息。
1. 先啟動rabbirMq的服務器
2. 啟動消費者
3. 啟動生產者。
* * * * *
#### rabbitMq服務器下載
[鏈接](http://www.rabbitmq.com/download.html)
登錄`http://localhost:15672/#/`可以查看服務消費等信息。
賬號密碼:guest