1.获取一个connection
public static Connection getConnection() throws IOException, TimeoutException {
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/vhost_ct");
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
return connectionFactory.newConnection();
}
2.新建一个发送类:生产者
package com.example.simple_send;
import com.example.util.ConnectionUtil;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* @author ct on 2018/3/23.
*/
public class Send {
private static final String QUEUE_NAME = "test_simple_queue";
public static void main(String[] a) throws IOException, TimeoutException {
//获取一个链接
Connection connection = ConnectionUtil.getConnection();
//从链接中获取一个通道
Channel channel = connection.createChannel();
//创建队列声明
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String msg = "hello_simple";
//发布
channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
System.out.println("send:" + msg);
channel.close();
connection.close();
}
}
3.创建一个接收类:消费者
package com.example.simple_send;
import com.example.util.ConnectionUtil;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* 消费者消费消息(获取消息)
*
* @author ct on 2018/3/24.
*/
public class Recv {
private static final String QUEUE_NAME = "test_simple_queue";
public static void main(String[] a) throws IOException, TimeoutException {
//获取一个链接
Connection connection = ConnectionUtil.getConnection();
//从链接中获取一个通道
Channel channel = connection.createChannel();
//定义队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
//获取到达的消息
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
byte[] body) throws IOException {
String msg = new String(body, "utf-8");
System.out.println(msg);
}
};
//监听队列
channel.basicConsume(QUEUE_NAME, true, defaultConsumer);
}
}
4.简单队列的不足之处:
耦合性较高:生产者和消费者一一对应(如果想要实现一个生产者对应多个消费者,不满足),队列名修改的时候,需要生产者和消费者同时修改。