赞
踩
Producer:消息生产者
Message:消息
Exchange:交换机
Binding:绑定交换机和队列
Routing Key:路由键,决定路由规则
Queue:队列,存储消息
Connection:连接服务端
Channel:信道,读写数据
Consumer:消费者
Broker:服务实例
Virtual host:虚拟主机,用于区分不同服务,蕾丝与不同域名,不会相互影响
路由键(Routing key):就是专门用于决定交换机和队列如何进行绑定的
第一步:执行
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
第二步,执行:
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
第三步:sudo yum install rabbitmq-server-3.8.2-1.el7.noarch
第四步,看到类似以下的画面:
输入y
即可完成安装。
启动RabbitMQ:systemctl start rabbitmq-server
看看端口有没有起来,查看状态:rabbitmqctl status
配置阿里云安全组,打开15672端口
添加admin用户:
rabbitmqctl add_user admin password
rabbitmqctl set_user_tags admin administrator
浏览器访问ip: 15672
用admin,密码password即可登录
访问出现错误:
可能没有安装插件,只需安装一下即可,输入命令:rabbitmq-plugins enable rabbitmq_management
支持多语言,java就是支持的其中一种语言
API丰富,RabbitMQ提供的Java客户端一系列的API来完成各种操作
(1)引入依赖:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.8.0</version>
</dependency>
RabbitMQ内部会要求我们再去引入一个依赖,记录日志的,没有这个依赖,不能正常运作
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.29</version>
</dependency>
(2)发送消息
里面RabbitMQ设置的主机地址就是阿里云服务器上RabbitMQ的主机地址
public static void main(String[] args) throws IOException, TimeoutException { // 创建连接工厂 ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setHost("121.40.123.230"); connectionFactory.setUsername("admin"); connectionFactory.setPassword("password"); // 建立连接 Connection connection = connectionFactory.newConnection(); // 获得信道 Channel channel = connection.createChannel(); // 声明队列 hello 队列名 channel.queueDeclare("hello", false, false, false, null); // 声明消息 String publishMessage = "hello world!"; channel.basicPublish("", "hello", null, publishMessage.getBytes()); System.out.println("发送了消息"); // 关闭连接 channel.close(); connection.close(); }
(3)消费者
public static void main(String[] args) throws IOException, TimeoutException { // 创建连接工厂 ConnectionFactory connectionFactory = new ConnectionFactory(); connectionFactory.setHost("121.40.123.230"); connectionFactory.setUsername("admin"); connectionFactory.setPassword("password"); // 建立连接 Connection connection = connectionFactory.newConnection(); // 获得信道 Channel channel = connection.createChannel(); // 声明队列 hello 队列名 channel.queueDeclare("hello", false, false, false, null); // 接收消息消费 channel.basicConsume("hello", true, new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, StandardCharsets.UTF_8); System.out.println("接收到消息:" + message); } }); }
(4)根据消息内容做处理
(5)多个消费者平均压力
(1)引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependdency>
(2)在yml配置文件中进行配置RabbitMQ
注:学习来源——官网+慕课网
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。