消息中间件
该用户昵称非法
这个作者很懒,什么都没留下…
展开
-
保证消息队列的高可用
RabbitMQrabbitmq共有单机,集群,镜像方式。单机此时只有一个单独的机器,可用性低。集群一个RABBITMQ集 群中可以共享user,virtualhosts,queues(开启Highly Available Queues),exchanges等。但message只会在创建的节点上传输。当message进入A节点的queue中后,consumer从B节点拉取时,Rabbi...转载 2019-01-24 17:36:25 · 258 阅读 · 0 评论 -
消息中间件保证消息可靠性(消息中间件接受到消息)
可靠性rabbitmq生产者丢失数据生产者将数据发送到rabbitmq的时候,可能数据就在半路给搞丢了。此时可以选择用rabbitmq提供的事务功能,就是生产者发送数据之前开启rabbitmq事务(channel.txSelect),然后发送消息,如果消息没有成功被rabbitmq接收到,那么生产者会收到异常报错,此时就可以回滚事务(channel.txRollback),然后重试发送...转载 2019-01-24 18:04:36 · 816 阅读 · 0 评论 -
消息中间件保证消息顺序执行及消息的幂等性
消息幂等性(1)比如拿消息来写库,你先根据主键查一下,如果这数据都有了,update一下(2)比如你是写redis,反正每次都是set,天然幂等性(3)比如不是上面两个场景,做的稍微复杂一点,你需要让生产者发送每条数据的时候,里面加一个全局唯一的id,类似订单id之类的东西,然后你这里消费到了之后,先根据这个id去比如redis里查一下,如果没有消费过,你就处理,然后这个id写redis。如...转载 2019-01-24 18:18:53 · 925 阅读 · 0 评论 -
使用消息中间件的场景及缺点
解耦模块A处于系统交互的中心,需求不断变更,与模块A交互的模块交替变换需求,如果不用消息中间件,模块A需要频繁变更耦合性强。如果采用消息中间件后,模块A只需把信息交付给消息中间件,其他模块需要改信息的时候只需要从消息中间件中取出消息就可,如果不需要和模块A交互时,只需要不从消息中间件中取出消息即可。异步如果某一个模块A调用其他模块,只是需要其他模块处理这个请求并且其他模块处理比较耗时,这是...转载 2019-01-22 10:04:34 · 612 阅读 · 0 评论 -
kafka
windows 下创建消费者命令./kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic testwindows 下创建生产者命令./kafka-console-producer.bat --broker-list localhost:9092 --topic testwindows 下启动kafka命令...原创 2019-01-23 15:40:42 · 151 阅读 · 0 评论