美文网首页
RabbitMQ概要简述核心要点

RabbitMQ概要简述核心要点

作者: levi912 | 来源:发表于2020-01-16 13:59 被阅读0次

    1.初步:

     1)消息中间件的作用、RabbitMQ开发语言、协议、启动命令

     2)生产者代码基本流程、消费者代码基本流程

    2.入门

     1)概念:模型框架、生产者(消息组成)、消费者(只消费消息体)、队列(存储消息)、      交换机(类型(4+2))

     2)交换机:Exchange.DeclareOk exchangeDelare(String exchange,String type,boolean durable,boolean autoDelete,boolean internal,Map<String,Object> arguments)

     3)队列:Queue. DeclareOk queueDeclare (String queue, boolean durable, boolean exclusive,boolean autoDelete, Map<String,Object> arguments) ,arguments常用参数x-message-ttl、x-expires、x-dead-letter-exchange

     4)发送消息:void basicPublish (String exchange , String routingKey, BasicProperties props ,byte[) body),BasicProperties常用参数contentType、contentEncoding、expiration、Headers、DeliveryMode

     5)消息消费模式(推模式Basic.Consume和拉模式Basic.Get)

     6)推模式消费消息:String basicConsume(String queue , boolean autoAck, String consumerTag, boolean noLocal , boolean exclusive, Map<String,Object> arguments , Consumer callback)

     7)消息拒绝:void basicReject(long deliveryTag, boolean requeue)

         void basicNack(long deliveryTag, boolean multiple , boolean requeue) 

    3.进阶

     1)生产者参数:mandatory和immediate

      a)mandatory:当mandatory 参数设为true 时,交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么RabbitMQ 会调用Basic.Return 命令将消息返回给生产者。当mandatory 参数设置为false 时,出现上述情形,则消息直接被丢弃。

      通过调用channel . addReturnListener 来添加ReturnListener 监昕器实现

      b)immediate:当immediate 参数设为true 时,如果交换器在将消息路由到队列时发现队列上并不存在任何消费者,那么这条消息将不会存入队列中。当与路由键匹配的所有队列都没有消费者时,该消息会通过Basic . Return 返回至生产者。

     2)备份交换机(AE):alternate-exchange

     3)过期时间TTL:两种(队列x-message-ttl毫秒、消息expiration毫秒,取小)

     4)死信队列:设置方式(x-dead-letter-exchange)、消息来源(拒绝、过期、队列满)

     5)延迟队列:通过DLX和TTL模拟实现

     6)持久化:持久化(交换机参数、队列参数、消息BasicProperties.deliveryMode(2)),RabbitMQ 并不会为每条消息都进行同步存盘(调用内核的fsync方法)的处理,可能仅仅保存到操作系统缓存之中而不是物理磁盘之中

     7)生产者消息确认:2种方式

      a)事务机制:channel.txSelect, channel.txCommit, channel.txRollback、确认阻塞,降低吞吐量

      b)确认机制(publisher confirm):channel.confirmSelect、channel.waitForComfirms,唯一ID,

       批量确认:缺陷重复批量发送

       异步确认:channel.addConfirmListener中ConfirmListener接口handleAck和handleNack

    8)消费者:

      a)消息分发:多个消费者轮询

    4.RabbitMQ管理

    1)多租户和权限: 概念

     rabbitmqctl:

      a)add_vhost,list_vhost、delete_vhost

      b)set_permissions,clear_permissions,list_permissions,list_user_permissions

    2)用户管理:

      rabbitmqctl:

      add_user、change_password、authenticate_user、delete_user、list_users、set_user_tags

    5.RabbitMQ集群

     1)基础:RabbitMQ集群只适合本地局域网使用,所有节点只备份所有元数组信息(交换机、队列、绑定、vhost)、不会备份消息,节点类型分为内存(ram)和硬盘(disc)

     2)配置步骤:

      a)配置hosts,复制cookie

      b)启动服务,加入节点,rabbitmqctl join_cluster rabbit@node1 --disc

       其他命令:rabbitmqctl cluster_status、rabbitmqctl stop_app、rabbitmqctl reset、rabbitmqctl start_app

     3)注意事项

      a)关闭所有节点后,确保首先启动最后关闭节点

      b)剔除节点 rabbitmqctl forget_cluster_node,所有节点断电等启动rabbitmqctl force_boot

      c)集群扩容,既有元数组信息不会自动迁移,通过UI导出导入

    相关文章

      网友评论

          本文标题:RabbitMQ概要简述核心要点

          本文链接:https://www.haomeiwen.com/subject/fyufzctx.html