rabbitMQ

什么是中间件 一定要跨平台

  • 分布式消息中间件 持久性 高可用 容错性 底层还是TCP/IP

    • ActiveMQ
    • RabbitMQ spring 同加公司开发 开源 模式性能高
    • kafka 不支持事务 性能最高
    • RocketMQ 阿里滴滴联合开发
  • 负载均衡中间件

    • Nginx
    • LVS负载均衡软件 集群
    • keepAlive
    • CDN
  • 缓存中间件

    • MemCache
    • Redis
  • 数据库中间件

    • Mysql=> MyCat
    • ShardingJdbc
  • 案例分析

    • 异步数据保存
    • 订单数据的消息分发
    • 信息容错
    • 分布式锁
    • 分布式会话
    • 分库分表

AMQP 协议 基于TCP/IP

安装

docker 安装

docker run -di --name myrabbit  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

安装后启动

2.3启用管理工具

第一步:点击打开RabbitMQ的命令窗口。如图:

RabbitMQ Command Prompt  (sbin dir)

第二步:输入命令rabbitmq-plugins enable rabbitmq_management

这个命令的意思是安装RabbitMQ的插件。

第三步:测试是否安装成功。

方法:访问地址: http://127.0.0.1:15672/ 默认账号:guest/guest 仅本地用户使用

%RabbitMO  username:  Password:  Logi

用户和权限设置

添加用户:rabbitmqctl add_user username[用户名] password[密码]

分配角色:rabbitmqctl set_user_tags username administrator[可以登录控制台、查看所有信息可以对rabbitMQ进行管理]

四种角色:

  • administrator[可以登录控制台、查看所有信息可以对rabbitMQ进行管理]
  • monitoring[监控者、登录控制台、查看所有信息]
  • policymaker[策略制定者,登录控制台,指定策略]
  • managment[普通管理员,登录控制台]

授权给新用户:rabbitmqctl set_permissions -p / username “.*” “.*” “.*”(后面三个”*”代表用户拥有配置、写、读全部权限)

新增虚拟主机:rabbitmqctl add_vhost vhost_name

将新虚拟主机授权给新用户: rabbitmqctl set_permissions -p vhost_name username “.*” “.*” “.*”(后面三个”*”代表用户拥有配置、写、读全部权限)

rabbitMQ常用的命令

添加一个用户: rabbitmqctl add-user admin[用户名] password[密码]

设置权限:rabbitmqctl set_user_tags username[用户名] administrator[权限]

修改密码: rabbitmqctl change_password username[用户名] newpassword[新密码]

删除用户:rabbitmqctl delete_user username[用户名]

查看所有用户:rabbitctl list_user

启动监控管理器:rabbitmq-plugins enable rabbitmq_management

关闭监控管理器:rabbitmq-plugins disable rabbitmq_management

启动rabbitmq:rabbitmq-service start

关闭rabbitmq:rabbitmq-service stop

查看所有的队列:rabbitmqctl list_queues

清除所有的队列:rabbitmqctl reset

关闭应用:rabbitmqctl stop_app

启动应用:rabbitmqctl start_app

核心组成部分

核心概念:
Server:又称Broker ,接受客户端的连接,实现AMQP实体服务。 安装rabbitmq-server
Connection:连接,应用程序与Broker的网络连接 TCP/IP/ 三次握手和四次挥手
Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可以建立对各Channel,每个Channel代表一个会话任务。
Message :消息:服务与应用程序之间传送的数据,由Properties和body组成,Properties可是对消息进行修饰,比如消息的优先级,延迟等高级特性,Body则就是消息体的内容。
Virtual Host 虚拟地址,用于进行逻辑隔离,最上层的消息路由,一个虚拟主机理由可以有若干个Exhange和Queueu,同一个虚拟主机里面不能有相同名字的Exchange
Exchange:交换机,接受消息,根据路由键发送消息到绑定的队列。(不具备消息存储的能力)
Bindings:Exchange和Queue之间的虚拟连接,binding中可以保护多个routing key.
Routing key:是一个路由规则,虚拟机可以用它来确定如何路由一个特定消息。
Queue:队列:也成为Message Queue,消息队列,保存消息并将它们转发给消费者。

队列没有声明交换机就走默认交换机

发送消息一定是交换机发送不是队列发送

交换机接收消息 推送到队列

1、 简单模式

Producer -> Queue -> Consuming: send and receive messages from a named queue.

2、

Producer -> Queue -> Consuming: Work Queue used to distribute time-consuming tasks among multiple workers.

3、 发布与订阅模式 [交换机绑定消息队列 发送消息给交换机 交换机就会发送给他绑定的消息队列]

Producer -> Queue -> Consuming: deliver a message to multiple consumers. This pattern is known as publish/subscribe

4、 路由模式direcr 默认的[fanout]不可以 默认全部 和发布与订阅的区别 在基础上加入了路由key 可以给多个key 会发给相同key的通道

Producer -> Queue -> Consuming: subscribe to a subset of the messages only.

5、 主题模式 路由模式选择topic 绑定队列是一种模糊匹配 # 零个和多个 * 必须有一级

Producer -> Queue -> Consuming: receiving messages based on a pattern (topics).

6、参数模式 路由选择headers

Producer -> Queue -> Consuming: RPC (Remote Procedure Call), the request/reply pattern.

使用java代码实现

发布订阅模式的具体实现

类型fanout

posted @ 2023-08-01 21:30  吾执青剑向天涯  阅读(16)  评论(0编辑  收藏  举报