消息机制

[Android] android的消息队列机制

ε祈祈猫儿з 提交于 2020-03-02 12:30:19
android下的线程,Looper线程,MessageQueue,Handler,Message等之间的关系,以及Message的send/post及Message dispatch的过程。 Looper线程 我 们知道,线程是进程中某个单一顺序的控制流,它是内核做CPU调度的单位。那何为Looper线程呢?所谓Looper线程,即是借助于Looper和 MessageQueue来管理控制流的一类线程。在android系统中,application的主线程即是借助于Looper和 MessageQueue来管理控制流的。其实,不仅仅只有主线程可以用Looper和MessageQueue来管理控制流,其他的线程也一样可以。我 们可以先看一下android source code的注释中给出的一种Looper线程的实现方式: package com.example.messagequeuedemo; import android.os.Handler; import android.os.Looper; import android.util.Log; public class LooperThread extends Thread { public static final String TAG = MainActivity.TAG; private static final

CCBPM工作流引擎的消息机制与设计

ぃ、小莉子 提交于 2020-02-29 22:25:55
CCBPM 工作流引擎的消息机制与设计 关键字: ccflow jflow 消息机制 流程引擎 自动发送短信 发送邮件 发送消息 流程引擎微信连接 消息接口 关于ccbpm: 我们把ccflow jflow两个版本的工作流引擎统称为ccbpm. 工作流引擎的消息产生: 在发送、抄送、退回、转发、加签、删除等等操作过程中,需要对当时人进行提醒,并且在设置提醒的情况下,就会产生消息。 Ccbpm 的消息删除机制: 对于已经过期无意义的提示,ccbpm就会删除,比如:a节点发送到b节点有n (n>=1)个人可以处理,这个时间如果设置了消息提醒在启动消息服务的情况下,就会提示给这N个人,如果一个人处理了发送到c点上去,那么ccbpm就会自动删除b节点的提示,防止重复提示。 消息定义: 消息是与系统与用户,用户与用户,用户与系统之间沟通的渠道,在一个mis系统的运行过程中会有很多类型的消息,这些消息通过一定的渠道来传递,这些渠道包括,短信、手机在线提示、邮件提示、即时通讯系统、微信推送。 消息服务: ccbpm的消息,是通过ccbpm的服务来发送的,如下图ccflow的服务器。 Ccflow的服务,能够把工作流引擎运行过程中的消息,发送出去。比如发送到下一步,有待办。 Ccbpm 支持的消息传递渠道: 如上图所示,ccbpm流程引擎的消息传递渠道有如上5中,下面分别介绍这五种消息推送渠道。

Handler机制中的消息队列

拟墨画扇 提交于 2020-02-26 14:19:26
学习自 蘑菇街大佬 Handler机制可以看成是一个消息阻塞队列,当有消息时立即处理消息,没有消息时则阻塞.在Android系统中APP启动后很快进入死循环,不断读取MessageQueue中的消息,有消息则立即处理,没有消息则阻塞.Android的View绘制,事件响应(点击,触摸屏幕等)都是把消息发送到了主线程的消息队列,包括自己在主线程创建的handler最终也是把消息插入到了主线程消息队列中,并最终分发到到指定的handler处理消息. handler.send(msg) ->sendMessageDelayed(msg, 0) ->sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis) ->enqueueMessage(queue, msg, uptimeMillis) //这里就是进入到消息队列,进入的是主线程的Looper(MainLooper) ->queue.enqueueMessage(msg, uptimeMillis); 当出队的时候会根据msg中的一个成员变量target(这个target就是handler)来分发的对应的hand 大专栏 Handler机制中的消息队列 ler,这样handler就拿到了信息, for (;;) { // 不断从 MessageQueue 获取 消息

Dart异步与消息循环机制

被刻印的时光 ゝ 提交于 2020-02-25 06:17:14
Dart与消息循环机制 翻译自 https://www.dartlang.org/articles/event-loop/ 异步任务在Dart中随处可见,例如许多库的方法调用都会返回Future对象来实现异步处理,我们也可以注册Handler来响应一些事件,如:鼠标点击事件,I/O流结束和定时器到期。 这篇文章主要介绍了Dart中与异步任务相关的消息循环机制,阅读完这篇文章后相信你可写出更赞的异步执行代码。你也能学习到如何调度Future任务并且预测他们的执行顺序。 在阅读这篇文章之前,你最好先要了解一下基本的 Future用法 。 基本概念 如果你写过一些关于UI的代码,你就应该熟悉消息循环和消息队列。有了他们才能保重UI的绘制操作和一些UI事件,如鼠标点击事件可以被一个一个的执行从而保证UI和UI事件的统一性。 消息循环和消息队列 一个消息循环的职责就是不断从消息队列中取出消息并处理他们直到消息队列为空。 消息队列中的消息可能来自用户输入,文件I/O消息,定时器等。例如下图的消息队列就包含了定时器消息和用户输入消息。 上述的这些概念你可能已经驾轻就熟了,那接下来我们就讨论一下这些概念在Dart中是怎么表现的? Dart的单线程执行 当一个Dart的方法开始执行时,他会一直执行直至达到这个方法的退出点。换句话说Dart的方法是不会被其他Dart代码打断的。 Note

Java消息服务

心不动则不痛 提交于 2020-02-24 23:03:18
一、 消息传送机制基础 1 、消息传送机制的优点 ①异构集成:在完全不同的平台上实现应用程序和系统请求调用服务。消息传送机制提供跨应用程序和子系统共享数据和功能的去耦方案。 ②缓解系统瓶颈:与一个同步组件处理众多请求时,众多请求一个接一个地积聚阻塞不同,这时候请求会发送到一个消息传送系统,该系统将该请求分发给多个消息侦听器组件 ( 增加漏斗 ) 。如此一来,就缓解了单独采用点对点同步连接带来的系统瓶颈。 ③提高可伸缩性:通过引入能够并发处理不同消息的多个消息接收者 ( 消息侦听器 ) ,消息传送系统的可伸缩性得以实现。 ④提高最终用户生产率:通过使用异步消息传送机制,用户可以在向系统发出请求后,继续做其他事情。 ⑤ 体系结构灵活性和敏捷性:消息传送机制抽象和去耦组件,能快速地响应软硬件和业务的变化。使用消息传送机制方式,消息生产者或是客户端组件都不会知道接收 组件使用的是哪种编程语言或平台,组件或服务位于何处,组件或服务实现的名称是什么,甚至用于访问该组件或服务的是哪种协议。 2 、企业消息传送 消息是通过网络从一个系统异步传送给其他系统的。在异步消息传送机制中,应用程序使用一个简单的 API 来构建一条消息,然后再将该消息转发给面向消息的中间件,以便传送给一个或多个的预定接收者。一条消息就是一个业务数据包,它通过网络从一个应用程序发送给其他应用程序。消息应该是自描述的

RocketMQ重试机制和消息

社会主义新天地 提交于 2020-02-24 14:22:52
重试机制   由于MQ经常处于复杂的分布式系统中,考虑网络波动,服务宕机,程序异常因素,很有可能出现消息发送或者消费失败的问题。因此,消息的重试就是所有MQ中间件必须考虑到的一个关键点。如果没有消息重试,就可能产生消息丢失的问题,可能对系统产生很大的影响。所以,秉承宁可多发消息,也不可丢失消息的原则,大部分MQ都对消息重试提供了很好的支持。   MQ 消费者的消费逻辑失败时,可以通过设置返回状态达到消息重试的结果。   MQ 消息重试只针对集群消费方式生效;广播方式不提供失败重试特性,即消费失败后,失败消息不再重试,继续消费新的消息。 模拟异常 消费者 /** * RocketMQ重试机制消费者 */ public class RetryConsumer { public static void main(String[] args) throws MQClientException { //创建消费者 DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("rmq-group"); //设置NameServer地址 consumer.setNamesrvAddr("192.168.33.135:9876;192.168.33.136:9876"); //设置实例名称 consumer.setInstanceName(

linux 内核与用户空间通信之netlink使用方法

﹥>﹥吖頭↗ 提交于 2020-02-22 18:37:06
摘自 https://www.cnblogs.com/x_wukong/p/5920437.html 转自:http://blog.csdn.net/haomcu/article/details/7371835 Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管道(Named Pipe),信号(Signal),消息队列(Message queue),共享内存(Shared Memory),信号量(Semaphore),套接字(Socket)。通过这些IPC机制,用户空间进程之间可以完成互相通信。为了完成 内核空间 与 用户空间 通信,Linux提供了基于socket的Netlink通信机制,可以实现内核与用户空间数据的及时交换。 本文第2节概述相关研究工作,第3节与其他IPC机制对比,详细介绍Netlink机制及其关键技术,第4节使用KGDB+GDB组合调试,通过一个示例程序演示Netlink通信过程。第5节做总结并指出Netlink通信机制的不足之处。

构建高并发高可用的电商平台架构实践

為{幸葍}努か 提交于 2020-02-17 07:25:52
一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之(MR) 在大规模的数据中,数据存在一定的局部性的特征,利用局部性的原理将海量数据计算的问题分而治之。 MR模型是无共享的架构,数据集分布至各个节点。处理时,每个节点就近读取本地存储的数据处理(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发(至reduce节点),避免了大量数据的传输,提高了处理效率。 2) 多进程、多线程并行执行

构建高并发高可用的电商平台架构实践

我们两清 提交于 2020-02-17 07:05:25
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处: http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构、大数据、搜索、开源技术 QQ:306591368 技术Blog: http://blog.csdn.net/yangbutao 一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之

构建高并发高可用的电商平台架构实践

时间秒杀一切 提交于 2020-02-17 06:44:57
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流。 转载请声明出处: http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构、大数据、搜索、开源技术 QQ:306591368 技术Blog: http://blog.csdn.net/yangbutao 一、 设计理念 1. 空间换时间 1) 多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(304,server不返回body,客户端可以继续用cache,减少流量),ETag) 反向代理缓存 应用端的缓存(memcache) 内存数据库 Buffer、cache机制(数据库,中间件等) 2) 索引 哈希、B树、倒排、bitmap 哈希索引适合综合数组的寻址和链表的插入特性,可以实现数据的快速存取。 B树索引适合于查询为主导的场景,避免多次的IO,提高查询的效率。 倒排索引实现单词到文档映射关系的最佳实现方式和最有效的索引结构,广泛用在搜索领域。 Bitmap是一种非常简洁快速的数据结构,他能同时使存储空间和速度最优化(而不必空间换时间),适合于海量数据的的计算场景。 2. 并行与分布式计算 1) 任务切分、分而治之