PHPOA!国内首家专业OA办公软件、OA系统、政务办公开源oa系统服务提供商,采用PHP+MYSQL开源语言,一直致力于应用管理软件基层研发,现己推出企业OA、政府OA、集团OA、SAAS版OA等应用平台,详细咨询13807814037
现在论坛购买,只需588元
建华区政府办公
政务OA系统:肇州县政府
政务OA系统中别再用 redis list 实现消息队列了,stream 专为队列而生mation)是指利用信息技术手段对政府机关的各项工作进行自动化处理和管理的一种综合性解决方案。本文将探讨政务oa方案的大部分消息队列的功能:
消息 id 系列化生成;
消息遍历;
消息的阻塞和非阻塞读;
consumer groups 消费组;
ack 确认机制。
支持多播。
提供了很多消息队列操作命令,并且借鉴 kafka 的 consumer groups 的概念,提供了消费组功能。
同时提供了消息的持久化和主从复制机制,客户端可以访问任何时刻的数据,并且能记住每一个客户端的访问位置,从而保证消息不丢失。
废话少说,先来看下如何使用,官网文档
数字文旅周报48期 | 重庆市武隆区联合腾讯发起“武隆·自然有声 ”专场直播:1.长沙市联合腾讯推出“嗨游长沙”服务平台,加快复商复市进度 为加快促推复商复市进度,进一步发挥大数据服务消费升级作用,增强经济发展后劲,根据长沙市政府“节假日促消费”活动安排,7月12日由长沙市数据资源管理局联合腾讯公司正式推出
3.重庆市武隆区联合腾讯发起“武隆·自然有声 ”专场直播 7月18日,重庆市武隆区联合腾讯发起“武隆·自然有声 ”2020腾讯专场直播,直播设置了风石有声、山涧有声、美食有声3大板块,多轮惊喜抽奖环节,
并汇聚5组特邀嘉宾带领用户游武隆、品武隆、住武隆,同时直播还为广大观众送出武隆特色风物,热门景区,超豪华民宿酒店特惠秒杀等福利,开启了旅游苏醒跨省第一站。
恢复跨省团队游,景区接待游客量不得超最大承载量50% 7月14日,文旅部印发《关于推进旅游企业扩大复工复业有关事项的通知》,指出低风险省(区、市)文旅部门在做好疫情防控工作的前提下,经当地省(区、市)党委、政府同意后
文化和旅游部、工信部等部门应坚持以群众文旅需求为导向,加快推广应用云计算等互联网基础性技术,引导各地各景区开发应用景区在线旅游服务平台,把个性化、定制化服务的目的地餐饮、娱乐、票务以及社交产品线上服务融入日常
android | 自动化测试辅助服务:题图:photo by ma fei at hong kong今天聊聊android的自动化测试,但这里先不讨论具体的技术方案,这些放到后面章节讨论,本文主要来跟大家分享一下自动化测试过程中一定会遇到的一些问题以及针对这些问题提供的一系列辅助服务
ui自动化测试不管是通过什么方案实现的ui自动化,录制回放也好、写自动化脚本也好,都会遇到同样的问题:在不同手机上安装被测应用时弹出的系统提示框,这部分肯定是没办法通过脚本实现的,而且存在兼容性问题:不同手机的安装流程一般是不一样的
安装好辅助应用后,点击图标会打开系统的辅助功能页面,这里会看到系统服务中已经注册好了一个叫智能安装服务的条目,打开该服务即可。
大家可以根据不同手机的安装提示进行适配,目前项目只适配了华为和小米的机型。
这种情况比较简单的做法就是通过起一个服务监听网络状态,一旦出现wifi关闭的情况就自动打开当然这里涉及到权限的一些问题,只适用于root过的手机或者版本比较低的系统没有很严格的权限管理;另外一种情况就是利用部分手机可以调整快捷入口的方式将
5g设备受阻,华为与澳大利亚谁是输家?:6月18日,针对澳大利亚有关其构成安全风险的言论,华为发布了一封致澳大利亚政府的公开信,表示自己的5g设备供应涉及“国家安全”言论过于片面,并非事实。
这封由华为澳大利亚分公司董事长约翰·洛德和两位董事联合署名的致澳政府公开信说:“最近围绕中国的一些公开言论涉及华为及其在澳大利亚扮演的角色,引发了一些安全顾虑。
这封公开信缘自最近几周,随着澳大利亚政府宣布大规模部署5g后,澳议员和澳情报机构双双发声希望政府禁止将华为5g设备纳入招标对象,因为其涉及国家安全问题。这让华为在澳业务再次遭重。
2018年2月,美国禁售华为、中兴手机之后,澳大利亚紧随其后表示,不再使用华为、中兴的手机。两个月后,本来由华为负责的所罗门群岛至悉尼的海底高速光缆工程也再次被澳大利亚搅局。
如果澳大利亚拒绝将华为纳入招标,那么,这将对华为5g业务在海外市场的拓展与推进造成非常恶劣的影响。甚至,很有可能其他与美国政治交好的国家,同样会以国家安全因素为由禁止华为的相关业务。
安全管理的主要内容 安全管理有什么好处:那么这时候就需要对电脑进行安全管理,来保证自己的生活和工作不被影响。那么主要内容是什么呢?
image.png 一、安全管理的主要内容 安全管理不仅包括下载的软件,还包括硬件上的,电脑想要一直安全放心的使用,就必不可缺少进行安全管理。对于企业的电脑来说,安全管理可以保护企业的内部信息。
二、安全管理有什么好处 能够保护系统不被那些有bug的软件给影响,这样子就可以在下载软件的时候,不必时刻担心着下载该软件电脑会中病毒。
抓住安全管理的主要内容,正确的对待这个问题,提高网络和系统的安全性,让电脑使用起来具有很好的体验。 安全管理对于电脑来说是一件非常重要的事情,正确的进行安全管理,打造一个健康、和谐的网络环境。
理解清楚安全管理的主要内容跟相关的信息,选对安全管理,对于用电脑的人来说是非常重要的,可以详细的了解一下。
建华区政府办公政务OA系统:肇州县政府政务OA系统中别再用 redis list 实现消息队列了,stream 专为队列而生一些建议以促进其有效实施。引言: 随着信息技术的不断发展和普及,政府机关在处理日常工作中面临着越来越多的挑战。政务oa方案的出现为政府机关提供了一种优化
公文系统程、提高工作效率的解决方案。本文将深入探讨政务oa方案的重要性、优势以及实施过程中的挑战,并提出一些建议以促进其有效实施。一、政务oa方案的重要性 政务oa方案对于政府机关的现代化管理具有重要意义。首先,政务oa方案可以帮助政府机关实现信息化管理,提高工作效率。其次,政务oa方案可以优化
公文系统程,减少冗余环节,提高工作效率。最后,政务oa方案可以提供数据共享和协同办公的平台,促进政府机关之间的沟通和合作。二、政务oa方案的优势 政务oa方案具有多项优势。首先,政务oa方案可以实现文档电子化管理,减少纸质文档的使用,降低成本。其次,政务o使用 redis 的 list 实现消息队列有很多局限性,比如:
没有良好的 ack 机制;
没有 consumergroup 消费组概念;
消息堆积。
list 是线性结构,想要查询指定数据需要遍历整个列表;
stream 是 redis 5.0 引入的一种专门为消息队列设计的数据类型,stream 是一个包含 0 个或者多个元素的有序队列,这些元素根据 id 的大小进行有序排列。
它实现了大部分消息队列的功能:
消息 id 系列化生成;
消息遍历;
消息的阻塞和非阻塞读;
consumer groups 消费组;
ack 确认机制。
支持多播。
提供了很多消息队列操作命令,并且借鉴 kafka 的 consumer groups 的概念,提供了消费组功能。
同时提供了消息的持久化和主从复制机制,客户端可以访问任何时刻的数据,并且能记住每一个客户端的访问位置,从而保证消息不丢失。
废话少说,先来看下如何使用,官网文档详见:redis.io/topics/stre…
xadd:插入消息
「云岚宗众弟子听命,击杀萧炎!」
当云山最后一字落下,那弥漫的紧绷气氛,顿时宣告破碎,悬浮半空的众多云岚宗长老背后双翼一振,便是咻咻的划过天际,追杀萧炎。
云山使用以下指令向队列中插入「追杀萧炎」命令,让长老带领子弟去执行。
代码语言:javascript
复制
xadd 云岚宗 * task kill name 萧炎
"1645936602161-0"
stream 中的每个元素由键值对的形式组成,不同元素可以包含不同数量的键值对。
该命令的语法如下:
代码语言:javascript
复制
xadd streamname id field value [field value ...]
消息队列名称后面的 「*」 ,表示让 redis 为插入的消息自动生成唯一 id,当然也可以自己定义。
消息 id 由两部分组成:
当前毫秒内的时间戳;
顺序编号。从 0 为起始值,用于区分同一时间内产生的多个命令。
通过将元素id与时间进行关联,并强制要求新元素的id必须大于旧元素的id, redis从逻辑上将流变成了一种只执行追加操作(append only)的数据结构。
这种特性对于使用流实现消息队列和事件系统的用户来说是非常重要的:
用户可以确信,新的消息和事件只会出现在已有消息和事件之后,就像现实世界里新事件总是发生在已有事件之后一样,一切都是有序进行的。
xread:读取消息
云凌老狗使用如下指令接收云山的命令:
代码语言:javascript
复制
xread count 1 block 0 streams 云岚宗 0-0
1) 1) "xe4xbax91xe5xb2x9axe5xaex97"
2) 1) 1) "1645936602161-0"
2) 1) "task"
2) "kill"
3) "name"
4) "萧炎" # 萧炎
xread [count count] [block milliseconds] streams key [key ...] id [id ...]
该指令可以同时对多个流进行读取,每个心法对应含义如下:
count:表示每个流中最多读取的元素个数;
block:阻塞读取,当消息队列没有消息的时候,则阻塞等待, 0 表示无限等待,单位是毫秒。
id:消息 id,在读取消息的时候可以指定 id,并从这个 id 的下一条消息开始读取,0-0 则表示从第一个元素开始读取。
如果想使用 xread 进行顺序消费,每次读取后要记住返回的消息 id,下次调用 xread 就将上一次返回的消息 id 作为参数传递到下一次调用就可以继续消费后续的消息了。
云韵宗主,我今天刚到云岚宗,历史的消息就不接了,只想接收我使用 xread 阻塞等待的那一刻开始通过 xadd 发布的消息要咋整?
运行「」心法即可,心法的最后「」心法即可,心法的最后 「」心法即可,心法的最后「」符号表示读取最新的阻塞消息,读取不到则一直死等。
等待过程中,其他长老向队列追加消息,则会立即读取到。
代码语言:javascript
复制
xread count 1 block 0 streams 云岚宗 $
这么容易就实现消息队列了么?说好的 ack 机制呢?
这里只是开胃菜,通过 xread 读取的数据其实并没有被删除,当重新执行 xread count 2 block 0 streams 云岚宗 0-0 指令的时候又会重新读取到。
所以我们还需要 ack 机制,
接下来,我们来一个真正的消息队列。
consumergroup
redis stream 的 consumergroup(消费者组)允许用户将一个流从逻辑上划分为多个不同的流,并让 consumergroup 的消费者去处理。
它是一个强大的支持多播的可持久化的消息队列。 redis stream 借鉴了 kafka 的设计。
stream 的高可用是建立主从复制基础上的,它和其它数据结构的复制机制没有区别,也就是说在 sentinel 和 cluster 集群环境下 stream 是可以支持高可用的。
redis stream 的结构如上图所示。有一个消息链表,每个消息都有一个唯一的 id 和对应的内容;
消息持久化;
每个消费组的状态是独立的,不不影响,同一份的 stream 消息会被所有的消费组消费;
一个消费组可以有多个消费者组成,消费者之间是竞争关系,任意一个消费者读取了消息都会使 last_deliverd_id 往前移动;
每个消费者有一个 pending_ids 变量,用于记录当前消费者读取了但是还没 ack 的消息。它用来保证消息至少被客户端消费了一次。
消费组实现的消息队列主要涉及以下三个指令:
xgroup用于创建、销毁和管理消费者组。
xreadgroup用于通过消费者组从流中读取。
xack是允许消费者将待处理消息标记为已正确处理的命令。
创建消费组
stream 通过 xgroup create 指令创建消费组 (consumer group),需要传递起始消息 id 参数用来初始化 last_delivered_id 变量。
我们使用 xadd 往 bossstream 队列插入一些消息:
代码语言:javascript
复制
xadd bossstream * name zhangsan age 26
xadd bossstream * name lisi age 2
xadd bossstream * name bigold age 40
如下指令,为消息队列名为 bossstream 创建「青龙门」和「六扇门」两个消费组。
代码语言:javascript
复制
# 语法如下
# xgroup create stream group start_id
xgroup create bossstream 青龙门 0-0 mkstream
xgroup create bossstream 六扇门 0-0 mkstream
stream:指定队列的名字;
group:指定消费组名字;
start_id:指定消费组在 stream 中的起始 id,它决定了消费者组从哪个 id 之后开始读取消息,0-0 从第一条开始读取, $ 表示从最后一条向后开始读取,只接收新消息。
mkstream:默认情况下,xgroup create命令在目标流不存在时返回错误。可以使用可选mkstream子命令作为 之后的最后一个参数来自动创建流。
读取消息
让「青龙门」消费组的 consumer1 从bossstream 阻塞读取一条消息:
代码语言:javascript
复制
xreadgroup group 青龙门 consumer1 count 1 block 0 streams bossstream >
1) 1) "bossstream"
2) 1) 1) "1645957821396-0"
2) 1) "name"
2) "zhangsan"
3) "age"
4) "26"
语法如下:
代码语言:javascript
复制
xreadgroup group groupname consumername [count n] [block ms] streams streamname [stream ...] id [id ...]
[] 内的表示可选参数,该命令与 xread 大同小异,区别在于新增 group groupname consumername 选项。
该选项的两个参数分别用于指定被读取的消费者组以及负责处理消息的消费者。
其中:
>:命令的最后参数 >,表示从尚未被消费的消息开始读取;
block:阻塞读取;
敲黑板了
如果消息队列中的消息被消费组的一个消费者消费了,这条消息就不会再被这个消费组的其他消费者读取到。
比如 consumer2 执行读取操作:
代码语言:javascript
复制
xreadgroup group 青龙门 consumer2 count 1 block 0 streams bossstream >
1) 1) "bossstream"
2) 1) 1) "1645957838700-0"
2) 1) "name"
2) "lisi"
3) "age"
4) "2"
consumer2 不能再读取到 zhangsan 了,而是读取下一条 lisi 因为这条消息已经被 consumer1 读取了。
使用消费者的另一个目的可以让组内的多个消费者分担读取消息,也就是每个消费者读取部分消息,从而实现均衡负载。
比如一个消费组有三个消费者 c1、c2、c3 和一个包含消息 1、2、3、4、5、6、7 的流:
xpending 查看已读未确认消息
为了保证消费者在消费的时候发生故障或者宕机重启后依然可以读取消息,stream 内部有一个队列(pending list)保存每个消费者读取但是还没有执行 ack 的消息。
如果消费者使用了 xreadgroup group groupname consumername 读取消息,但是没有给 stream 发送 xack 命令,消息依然保留。
比如查看 bossstream 中的 消费组「青龙门」中各个消费者已读取未确认的消息信息:
代码语言:javascript
复制
xpending bossstream 青龙门
1) (integer) 2
2) "1645957821396-0"
3) "1645957838700-0"
4) 1) 1) "consumer1"
2) "1"
2) 1) "consumer2"
2) "1"
1)未确认消息条数;
2) ~ 3)青龙门中所有消费者读取的消息最小和最大 id;
查看 consumer1读取了哪些数据,使用以下命令:
代码语言:javascript
复制
xpending bossstream 青龙门 - + 10 consumer1
1) 1) "1645957821396-0"
2) "consumer1"
3) (integer) 3758384
4) (integer) 1
ack 确认
所以当接收到消息并且消费成功以后,我们需要手动 ack 通知 streams,这条消息就会被删除了。命令如下:
代码语言:javascript
复制
xack bossstream 青龙门 1645957821396-0 1645957838700-0
(integer) 2
语法如下:
xack key group-key id [id ...]
消费确认增加了消息的可靠性,一般在业务处理完成之后,需要执行 ack 确认消息已经被消费完成,整个流程的执行如下图所示:
使用 redisson 实战
使用 maven 添加依赖
代码语言:javascript
复制
<dependency>
<groupid>org.redisson</groupid>
<artifactid>redisson-spring-boot-starter</artifactid>
<version>3.16.7</version>
</dependency>
添加 redis 配置,码哥的 redis 没有配置密码,大家根据实际情况配置即可。
代码语言:javascript
复制
spring:
application:
name: redission
redis:
host: 127.0.0.1
port: 6379
ssl: false
代码语言:javascript
复制
@slf4j
@service
public class queueservice {
@autowired
private redissonclient redissonclient;
/**
* 发送消息到队列
*
* @param message
*/
public void sendmessage(string message) {
rstream<string, string> stream = redissonclient.getstream("sensor#4921");
stream.add("speed", "19");
stream.add("velocity", "39%");
stream.add("temperature", "10c");
}
/**
* 消费者消费消息
*
* @param message
*/
public void consumermessage(string message) {
rstream<string, string> stream = redissonclient.getstream("sensor#4921");
stream.creategroup("sensors_data", streammessageid.all);
map<streammessageid, map<string, string>> messages = stream.readgroup("sensors_data", "consumer_1");
for (map.entry<streammessageid, map<string, string>> entry : messages.entryset()) {
map<string, string> msg = entry.getvalue();
system.out.println(msg);
stream.ack("sensors_data", entry.getkey());
}
}
}
最后
如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163相互学习,我们会有专业的技术答疑解惑
如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star:http://github.
信创政务OAeb.net/u/defu不胜感激 !
php学习手册:https://doc.
信创政务OAeb.com
技术交流论坛:https://q.
信创政务OAeb.com
大数据24小时 | 浪潮公司政企合作再“升级”,软银集团234亿英镑收购英国arm:软件银行集团斥资234亿英镑收购英国arm公司,布局人工智能;企业软件提供商zenreach 宣布完成3000 万美元融资;中国联通、浪潮公司与黑河市政府达成战略合作,将共建云计算数据中心……以下为您奉上更多大数据热点事件
四、手机导航应用停车百事通完成新一轮战略投资,用大数据技术打造智能停车服务日前,基于大数据技术的手机导航应用“停车百事通”宣布已经获得了新一轮的战略投资,投资方为松禾资本,具体融资金额尚未透露。
五、中国联通、浪潮公司与黑河市政府达成战略合作,将共建云计算数据中心阔别沈阳之后,近日,云计算、大数据服务商浪潮集团宣布与黑河市政府达成战略合作,此外,中国联通也加入到了此次的合作当中。
根据签订的协议显示,届时,三方将共同打造黑河市云计算数据中心,该中心将依托于联通公司与浪潮公司海量的数据资源以及先进的云计算、大数据处理能力,为黑河市大数据产业发展提供助力。?
据了解,中电科安成立于2010年,主要在安全应急和环境保护领域向政府和企业提供投资管理咨询服务、软硬件产品供应、大数据和云计算技术服务、本地化运营管理等服务。
1亿元!腾讯云中标福建平潭全域智慧旅游工程 | 数字文旅周报43期:就在前不久,腾讯云刚中标海南全域旅游监管服务平台旅游公共服务系统。截至目前,中国三个国际旅游岛(海南、平潭、横琴)建设项目,腾讯云已中标两个。 ?
(中国气象报社) 广州南沙天后宫启动五项智慧旅游项目 今后到南沙天后宫旅游,旅游导览、购买文创周边产品、买咖啡饮品,将更加智能化。
12月31日上午,广州南沙旅游发展有限公司联合各合作单位在广州南沙天后宫景区内举行智慧旅游项目启用仪式。 ? 5项给游客市民带来便利和新体验的天后宫景区智慧旅游项目正式启用。
孙中山故里旅游区上线5g智慧导览系统 日前,广东省中山市首个5g智慧导览系统在孙中山故里旅游区发布,并且广东移动中山分公司还与中山市文化广电旅游局签订“5g+智慧旅游”战略合作协议。
一是如何把所有的已经存量或者是新增的文旅产业资源全面数字化,连接到整个数字化实践和平台中,比如在政府侧,数字化重构投诉、诚信体系直接关系游客的需求痛点;二是如何完整的从线上到线下打通渠道、运营、管理和服务
大数据投资人必读:中国大数据发展与投资分析报告:大数据在金融领域的应用大数据能够解决金融领域海量数据的存储、查询优化及声音、影像等非结构化数据的处理。金融系统可以通过大数据分析平台,导入客户社交网络、电子商务、终端媒体产生的数据,从而构建客户视图。
政府电子政务建设现状1、市场规模电子政务是中国信息化建设的重要内容,是国家实施政府职能转变,提高政府管理、公共服务和应急能力的重要举措,有利于带动整个国民经济和社会信息化的发展。
2、市场结构在总体市场规模持续平稳增长的同时,中国电子政务建设的投入结构也发生了变化。通常电子政务的投入顺序是硬件、软件和服务。据统计,中国电子政务行业近年来总体复合增长率为12%,未来仍将稳步增长。
因此,加强电子政务建设,管理好政府的数据资产,完善政府决策流程,将是未来数年大数据在公共管理领域发展的重要方向。大数据将对政府部门的精细化管理和科学决策发挥重要作用,从而提高政府的服务水平。
具体而言,依托大数据的发展,有利于节约政府投资、加强市场监管,从而提高政府决策能力、提升公共服务能力,实现区域化管理。2. 电信行业大数据应用需求分析电信运营商拥有丰富的数据资源优势。
全国热“链”丨中国各省区块链政策文件盘点:2017年2月,南京市人民政府下发《市政府办公厅关于印发“十三五”智慧南京发展规划的通知》,在发展目标中,《通知》提到,“智慧城市与智慧产业融合发展水平大幅提升。
在此后的3月、6月和7月,南京市政府陆续下发了《市政府办公厅关于印发南京市“十三五”金融业发展规划的通知》、《市政府办公厅转发市经信委关于南京市加快推进制造业与互联网融合发展实施方案的通知》、《市政府关于加快科技金融体系建设促进科技创新创业的若干意见
贵州贵阳市是国内为数不多的在《政府工作报告》中提及区块链的地区,2017年2月,贵阳市市长刘文新作政府工作报告,其中区块链技术与政府数据共享开放、大数据安全一起被视为贵阳市未来五年抢占大数据发展制高点三个重点突出方向之一
广东广东省政府对区块链开始重视可以追溯到2016年,2016年12月26日,广州市委书记任学锋在《中国共产党广州市第十一次代表大会上的报告》中关于部署广东今后五年的主要工作任务中提到,“积极承接建设重大科技项目
小结从目前各省政府对区块链的态度看,贵州省发展区块链是经过深思熟虑的,依托大数据产业优势,制定了较为完善的纲领性文件,为其他地区制定政策提供了借鉴。
转载请注明出处,本站网址:
http://www.oa900.cn/news_2176.html