## 使用java
发送单个消息的生产者,以及接收消息并将其打印出来的消费者。
发布者将连接到RabbitMQ,发送一条消息,然后退出。
![](http://www.rabbitmq.com/img/tutorials/python-one.png =400x80)
#### 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