work模式有轮询分发和公平分发
轮询分发是通过轮询平均分发到后台消费者,这种方式如果由于其中一消费者进程处理缓慢会导致整体性能下降。
公平分发是通过确认每个消费者发送确认消息后才进行分发消息,这样能很好的平衡性能。通过设置int prefetchCount = 1;channel.basicQos(prefetchCount);完成
订阅模式: work模式之允许发送消息给一个消费者,而订阅模式可以发送一个消息给多个消费者。 订阅模式是通过队列绑定到交换机,由交换机告诉生产者发送消息到指定队列。交换机的类型有fanout,direct、topic。 fanout交换机没有路由键值 direct交换机有唯一路由键值 topic交换机通过通配符指定路由键值,最灵活。使用最广泛! 通过消息通知管理和消息持久化保证消息不丢失: 当客户端任务进程拿到任务执行时有异常导致消失丢失,消息通知管理机制保证消息的不丢失,它是通过客户端发送确认消息通知rabbitmq的,如果发送端接收不到客户端的消失确认会马上重新发起消息。设置autoAck =false通过后台任务进程手动发送关闭消息, 而持久化能够保证rabbitmq退出或崩溃后消息不丢失。通过MessageProperties.PERSISTENT_TEXT_PLAIN设置持久化 rabbitmq集群 rabbitmq操作的所有数据和状态都可以复制到集群所有节点,除了队列 集群配置方式:通过客户端工具,配置文件声明 故障处理:可以任意启动和停止集群各阶段,不建议在wlan进行集群,推荐在lan中进行 硬盘还是内存:虽然内存节点能使交换机、队列、提高性能,但不可靠,推荐所有节点为硬盘节点。 相同的Erlang Cookie确保集群所有节点的互相通信 通过负载均衡器连接rabbitmq集群,如:HAProxy