高并发场景下各种框架和开发语言的选择应用处理

常用框架mq消息队列,生产者-消费者异步消费

disruptor高并发处理框架,类似于mq生产者-消费者的模式

go语言在语言层面通过通信提高并发编程模型中高并发的性能

AKKA ACTOR模型,面向 ACTOR开发,创建actor使用actor传递消息,对actor实现监听,actor持久化,与spring集成使用inbox传递消息,实现Counter计数器actor


mq消息队列先创建连接createConnection,再创建会话session,创建队列destination,创建生产者producer,

创建textmessage, 生产者发送message

spring框架对mq进行了封装,使用jmsTemplate配置参数连接mq,配置destination参数,,回调创建message发送


jmstemplate extends jmsDestinationAccessor implements jmsoperation

jmsAccessor connectionFactory createConnection createSession()    destinationResolver resolverDestiantionName()

jmstemplate .send()-->createProducer(sesssion, destination) createMessage(session) producer.send(message)


jdbcTemplate extends jdbcAccessor implemnets jdbcOperations



MQ消息中间件特点 异步 解耦 可靠性 性能 路由 削峰 复杂

JMS规范,JAVA提供API

为什么使用Rocketmq ,activemq消息处理吞吐量万级别,RocketMq在百万级别,Kafaka有消息丢失,经历过爽十一,java实现

RocketMq 有消息存储持久化

标准的queue点对点,topic发布订阅,producer,consumer

rocketmq 集群 广播

broker 存储消息 namesvr offset 类似zookeeper

rocketmq监控,主备模式,2m-2s-syn, 2m-2s-asyn


eventbus


ack消息确认应答,确认下消息队列离队,AUTO_ACKNOWLEDGE自动确认,CLIENT_ACKNOWLEDGE消费端手动确认

事务&非事务性消息

存储5.7默认使用KahaDB文件存储,是AMQ默认存储的升级,AMQ5.0默认时候用AMQ文件存储

JDBC数据库存储配置,Memory内存消息存储


mq支持jms transaction,xa transaction两种事务

mq同步接受消息consumer.receive();异步接收consumer.setMessageListener(MessageListener listener)

jms规范本身异步


高并发场景下各种框架和开发语言的选择应用处理

mq进入控制台地址http://localhost:8161/admin

查看queue队列,待处理消息,消费者数量,已入队消息,已出队消息

进入队列,查看messge列表,message detaiInfo

view consumsers


conn.createSession(true, Session.SESSION_TRANSACTED)

事务使用设置true,自动设置为Session.SESSION_TRANSACTED

事务设置为false,手动选择设置session.client_acknowlege,session.AUTO_ACKNOWLEDGE, session.DUPS_OK_ACKNOWLEGE