RabbitMQ概要简述核心要点

2020-01-16  本文已影响0人  levi912

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导出导入

上一篇下一篇

猜你喜欢

热点阅读