java:brew安装rabbitmq以及简单示例

什么是消息队列mq

可以看我之前写的这篇 消息队列MQ

rabbitmq简介

RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。

brew安装rabbitmq

1、安装
官方文档

brew install rabbitmq

这是安装的 log

Management UI: http://localhost:15672
Homebrew-specific docs: https://rabbitmq.com/install-homebrew.html

To start rabbitmq now and restart at login:
  brew services start rabbitmq
Or, if you don't want/need a background service you can just run:
  CONF_ENV_FILE="/opt/homebrew/etc/rabbitmq/rabbitmq-env.conf" /opt/homebrew/opt/rabbitmq/sbin/rabbitmq-server

2、打开 http://localhost:15672
在这里插入图片描述
默认的用户名密码都是 guest,登录后可以在 Admin 那一列菜单内添加自己的用户
在这里插入图片描述

权限

在这里插入图片描述
超级管理员(administrator)
可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。

监控者(monitoring)
可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

策略制定者(policymaker)
可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

普通管理者(management)
仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。

其他
无法登陆管理控制台,通常就是普通的生产者和消费者。

创建虚拟主机(Virtual Hosts)

为了让各个用户可以互不干扰的工作,RabbitMQ添加了虚拟主机(Virtual Hosts)的概念。其实就是一个独立的访问路径,不同用户使用不同路径,各自有自己的队列、交换机,互相不会影响。
在这里插入图片描述

交换机类型

1. 直连交换机(Direct Exchange)

特点:

  • 基于路由键(Routing Key)的完全匹配来路由消息。

应用场景:

  • 当消息需要明确指定到某个队列时,使用直连交换机。

举例说明:

  • 假设有一个订单处理系统,其中包含“订单处理”和“订单审核”两个队列。生产者发送一个消息时,指定路由键为“order.process”,那么只有绑定了该路由键的“订单处理”队列会收到消息。如果指定路由键为“order.review”,则只有“订单审核”队列会收到消息。

2. 扇形交换机(Fanout Exchange)

特点:

  • 将消息广播到所有绑定到它的队列,忽略路由键。如果N个队列绑定到某个扇型交换机上,当有消息发送给此扇型交换机时,交换机会将消息的发送给这所有的N个队列

应用场景:

  • 当需要将消息发送给多个队列,且每个队列都需要接收到相同消息的副本时,使用扇出交换机。

举例说明:

  • 假设有一个实时新闻发布系统,包含“新闻订阅者A”和“新闻订阅者B”两个队列。生产者发布一条新闻消息到扇出交换机,那么这条消息将被同时发送到“新闻订阅者A”和“新闻订阅者B”两个队列,实现广播效果。

3. 主题交换机(Topic Exchange)

特点:

  • 基于路由键和通配符(*和#)的模糊匹配来路由消息。

应用场景:

  • 当需要根据消息的不同类型或属性将其路由到不同的队列时,使用主题交换机。

举例说明:

  • 假设有一个日志系统,包含“error.log”、“info.log”和“debug.log”三个队列。生产者发送一条错误日志消息,路由键为“system.error”。此时,绑定了“*.error”或“system.#”的队列将接收到这条消息,因此“error.log”队列会收到它,而“info.log”和“debug.log”则不会(除非它们也绑定了匹配的路由键)。

* (星号) 用来表示一个单词 (必须出现的)
# (井号) 用来表示任意数量(零个或多个)单词

通配的绑定键是跟队列进行绑定的,举个小例子
队列Q1 绑定键为*.TT.* 队列Q2绑定键为 TT.#
如果一条消息携带的路由键为 A.TT.B,那么队列Q1将会收到;
如果一条消息携带的路由键为TT.AA.BB,那么队列Q2将会收到;

4. 头部交换机(Headers Exchange)

特点:

  • 基于消息的头部信息进行匹配,而不是路由键。

应用场景:

  • 当需要根据消息的复杂属性进行路由时,使用头部交换机。这种交换机类型使用较少,因为它需要更复杂的匹配逻辑。

举例说明(假设场景):

  • 假设有一个消息处理系统,其中消息具有多个头部属性,如“priority”(优先级)、“type”(类型)等。生产者发送一条高优先级的紧急消息,并设置相应的头部属性。此时,只有那些设置了匹配这些头部属性(如“priority=high”)的队列才会接收到这条消息。

RabbitMQ的工作原理

在这里插入图片描述
组成部分说明:
Broker:消息队列服务进程,此进程包括两

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lvan的前端笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值