1、常用命令
描述 | 命令 |
---|---|
启动管理工具 | rabbitmq-plugins enable rabbitmq_management |
2、用户角色
角色 | 描述 |
---|---|
超级管理员(administrator) | 可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。 |
监控者(monitoring) | 可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等) |
策略制定者(policymaker) | 可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。 |
普通管理者(management) | 仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。 |
其他 | 无法登陆管理控制台,通常就是普通的生产者和消费者。 |
3、管理工具
默认账号 guest/guest
消息确认模式
模式1:自动确认
只要消息从队列中获取,无论消费者获取到消息后是否成功消息,都认为是消息已经成功消费。
模式2:手动确认
消费者从队列中获取消息后,服务器会将该消息标记为不可用状态,等待消费者的反馈,如果消费者一直没有反馈,那么该消息将一直处于不可用状态。
交换机类型
- direct 路由模式(如果路由键完全匹配的话,消息才会被投放到相应的队列.)
- fanout 发布订阅模式(当发送一条消息到fanout交换器上时,它会把消息投放到所有附加在此交换器的上的队列.)
- headers
- topic(设置模糊的绑定方式,”*”操作符将”.”视为分隔符,匹配单个字符;”#”操作符没有分块的概念,它将任意”.”均视为关键字的匹配部分,能够匹配多个字符.)
五种队列模式
- helloword 模式 消息 1 : 1
- 工作队列 1条消息只能被一个消费者消费(有轮询、多劳多得模式)
- 发布/订阅 模式 一个消息可以被多个消费者消费 消息发送至 交换机,交换机绑定队列 ,消费者监听队列。
- 路由模式 (生产者将消息发送到direct交换器,在绑定队列和交换器的时候有一个路由key,生产者发送的消息会指定一个路由key,那么消息只会发送到相应key相同的队列,接着监听该队列的消费者消费信息.)
- 主题模式(上面的路由模式是根据路由key进行完整的匹配(完全相等才发送消息),这里的通配符模式通俗的来讲就是模糊匹配.
符号”#”表示匹配一个或多个词,符号”*”表示匹配一个词.
- )
工作原理
4、持久化交换机和队列
**
5、spring boot 集成 rabbitmq
- 加入依赖
```java
org.springframework.boot spring-boot-starter-amqp
2. 配置application.properties文件
```java
spring.application.name=spirng-boot-rabbitmq
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
配置队列
@Configuration
public class RabbitConfig {
@Bean
public Queue queue() {
return new Queue("q_hello");
}
}
消息生产者
@Component
public class HelloSender {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send() {
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());//24小时制
String context = "hello " + date;
System.out.println("Sender : " + context);
//简单队列的情况下routingKey即为Q名
this.rabbitTemplate.convertAndSend("q_hello", context);
}
}
消息消费者
@Component
@RabbitListener(queues = "q_hello")
public class HelloReceiver {
@RabbitHandler
public void process(String hello) {
System.out.println("Receiver : " + hello);
}
}
启动rabbitmq
service rabbitmq-server start