# 启动 brew services start rabbitmq # 停止 brew services stop rabbitmq # 后台地址 http://localhost:15672 # 默认账号 guest/guest ip:5672
1.镜像模式
1.fanout,将消息发送到与交换机绑定的所有队列中
2.direct,将消息路由到routingkey与bindingkey一致的队列中。
3.topic,按规则模糊匹配,不知道具体的场景是啥。
4.headers,根据发送消息的header属性进行匹配,好像性能会很差。
rabbitmq也有使用到NIO,具体集中在网络IO方面,tcp连接复用
@Resource private RabbitTemplate rabbitTemplate; public String getVersion() { return rabbitTemplate.execute(channel -> { Map<String, Object> serverProperties = channel.getConnection().getServerProperties(); return serverProperties.get("version").toString(); });
当开启ack消息确认时,如果mq发送消息到消费者消费,但是消费者一直没有ack,需要等到消费者下线后,该消息会重新放到队列尾部,等待重新消费。
现象:测试环境ack失败的记录,在重启的时候,会重新消费。