高并发场景下各种框架和开发语言的选择应用处理
常用框架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