简单的队列就是生产者生产信息放到队列中,消费者去队列中取信息然后消费信息。
下列代码是github源代码,这里借用人家的代码改编,说明自己的一些理解
生产者:
1.在生产者中,首先定义了一个队列的名字
2.创建连接工厂(我们可以为工厂设定一些参数),工厂创建连接,连接创建信道
3.然后信道绑定到指定的队列上,生产者将生产的message通过指定的队列发送出去
消费者:
1.在消费者中定义一个队列的名字,注意名字要与生产者中定义的名字相同
2.初始部分与生产者相同,都是创建连接工厂,工厂创建连接,连接创建信道
3.然后信道绑定到指定的队列上,获取消息打印出来并自动确认
生产者package com.xxxx.simple.send;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.nio.charset.StandardCharsets;
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");
factory.setPort(5672);
factory.setUsername("yeb");
factory.setPassword("yeb");
factory.setVirtualHost("/");
//创建连接
try (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(StandardCharsets.UTF_8));
System.out.println(" [x] Sent '" + message + "'");
}
}
}
消费者
package com.xxxx.simple.recv;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;
import java.nio.charset.StandardCharsets;
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");
factory.setPort(5672);
factory.setUsername("yeb");
factory.setPassword("yeb");
factory.setVirtualHost("/");
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");
//打印消息
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
}
}



