作用程序员的玩具:兔子没钱。——暮雪绵豆沙
- 流量削峰。保护服务
- 逻辑解耦。中间件
- 优雅异步。
- ActiveMQ:老牌,量大就卡。
- Kafka:大量数据。
- RocketMQ:双十一的考验。
- RabbitMQ:操作简单,社区活跃,量大就卡。
- 生产者:产生消息
- 交换机:路由分发
- 队列:消息队列
- 消费者:消费消息
- 通道:管理连接
工作模式
- 简单模式
- 分配工作任务
- 发布订阅
- 路由
- 主题
- RPC
- 发布确认
官网下载
配置环境变量ERLANG_HOME
指向根目录,比如说:E:programserl-24.2
官网下载
配置切换到sbin目录
启用Web插件
./rabbitmq-plugins.bat enable rabbitmq_management
打开后台服务
./rabbitmq-server.bat -detached
网页地址
http://localhost:15672/#/
初始账户
guest / guest
pom.xml
生产者com.rabbitmq amqp-client 5.14.0 commons-io commons-io 2.6
全局常量:队列名称
private static final String queueName = "q";
获取连接
public static Connection getConn() throws Exception {
ConnectionFactory cf = new ConnectionFactory();
cf.setHost("localhost");
cf.setUsername("guest");
cf.setPassword("guest");
return cf.newConnection();
}
发送消息
public static void main(String[] args) throws Exception {
Connection conn = getConn();
Channel channel = conn.createChannel();
channel.queueDeclare(queueName, false, false, false, null);
String message = "你好,沃德!";
channel.basicPublish("", queueName, null, message.getBytes());
System.out.println("欧了~");
channel.close();
conn.close();
}
点击运行
成功!
全局变量和获取连接:同上
消费消息
public static void main(String[] args) throws Exception {
Connection conn = getConn();
Channel channel = conn.createChannel();
DeliverCallback deliver = (consumerTag, message) -> {
System.out.println(new String(message.getBody()));
};
CancelCallback cancel = consumerTag -> {
System.out.println("取消了~");
};
channel.basicConsume(queueName, true, deliver, cancel);
System.out.println("欧了~");
//不关,等回调
}
点击运行
成功!



