华为云OBS创建对象时以HTTP方式通知订阅终端
大概说一下业务场景。厂房里的摄像头实时监控相关的生产流程,通过图像识别技术判定有质量问题时将图片和问题信息上传到华为云OBS服务中。客户端实时获取并OBS里面的新数据,处理并发起相关整改流程、通知相关责任人等。
客户端实时获取OBS里的新数据,因为无法得知问题图片和信息在什么时候上传到OBS,最初的想法是通过定时任务调整合理的触发频率获取数据。这种方式有两个问题,一是无法真正做到实时,除非触发频率调到很高;二是没有新数据时定时任务空跑会浪费资源。
阅读了华为云OBS开发指南中的事件通知章节,觉得应该有更好的方式实现上述需求,经研究确实可行。开通了华为云账号并购买了ECS弹性云服务器、SMN和OBS服务,直接上步骤。
1、根据需要创建桶
1.1 选择区域,搜索OBS
1.2 创建桶
留意桶名称和Endpoint,代码里面会用到。
2、设置SMN
2.1 创建主题
创建主题选择的区域需要和OBS的区域相同。
2.2 设置主题策略
可发布消息的服务勾选OBS。
2.3 添加订阅
终端地址里的IP或域名必须是公网能访问的。
刚刚添加的订阅是未确认状态。
3、准备订阅终端(微服务)
微服务测试接口代码如下:
@RequestMapping("/smntest")public void smnTest(HttpServletRequest request, @RequestBody Map<String, Object> paramMap) {System.out.println("smn请求进来了!!!");System.out.println("header如下:");Enumeration<String> headers = request.getHeaderNames();while (headers.hasMoreElements()) {String s = headers.nextElement();System.out.println( s + ":" + request.getHeader(s));}System.out.println("参数如下:");System.out.println(paramMap.toString());}
将服务部署到公网能访问到的服务器中。
4、确认订阅
4.1 发送确认订阅请求
在消息通知服务的订阅菜单中,锁定3.2中添加的订阅终端,点击请求订阅。
4.2 确认订阅
部署的测试服务里会受到请求订阅的请求。
将参数里面的subscribe_url参数值复制到浏览器的地址栏中,回车。
刷新订阅主题界面,发现订阅状态已更新。
5、编写DEMO
写一个demo向OBS桶里面创建对象,触发消息通知,SMN消息服务给订阅终端发送消息http消息触发相应的业务逻辑。
5.1 获取ak/sk
密钥创建后只能下载一次。
5.2 OBS桶里创建对象
public static void main(String[] args) throws IOException, ClassNotFoundException {ObsClient obsClient = new ObsClient(ak, sk, endP);BucketNotificationConfiguration bnc = new BucketNotificationConfiguration();TopicConfiguration tc = new TopicConfiguration();//设置配置idtc.setId("test-create");//设置主题RUNtc.setTopic("urn:smn:cn-southwest-2:81670b4b98134c338810a791c8fad9f8:OBS-NOTIFICATION-TEST");//设置触发事件-put对象时触发tc.getEventTypes().add(EventTypeEnum.OBJECT_CREATED_PUT);bnc.addTopicConfiguration(tc);obsClient.setBucketNotification(bucketN, bnc);//向桶里put一个对象createObj(obsClient);}
createObj(obsClient):
//添加对象public static void createObj(ObsClient obsClient) {PersonVO personVO = new PersonVO("张三", "南宁");obsClient.putObject(bucketN, "XiaoZhang", new ByteArrayInputStream(personVO.toString().getBytes(StandardCharsets.UTF_8)));}
6、运行main(..)方法
可以看到putObject事件成功触发了SMN向订阅终端发送消息。订阅终端接收的数据包括了新建对象所在的桶名称和对象名称。
OBS里新创建的对象:
根据桶名和对象名即可下载对象。
华为云OBS创建对象时以HTTP方式通知订阅终端相关推荐
- 基于华为云obs的springMVC文件上传下载,简单demo
使用华为云的obs作为文件服务 使用springdata jpa框架操作数据库 创建springboot项目,添加华为云obs的SDK的maven依赖 <!-- 开启spring配置类 --&g ...
- 华为云OBS文件服务
华为云OBS文件服务 准备工作 先获取OBS的SK,AK,终端节点.然后创建桶 将以上四个值存放在Nacos中 /*** 取值为所创建的桶名*/@Value("${obs.bucketNam ...
- 前端js华为云obs上传下载文件与进度条的设置
前端js华为云obs上传下载文件与进度条的设置 首先下载OBS BrowserJS SDK安装包 用git将代码拉到本地 git clone https://github.com/huaweiclou ...
- cdn加速华为云obs桶文件配置过程(详细)
大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂. 前言 前面写了一篇文章,jeecg-boot中上传图片到华为云obs云存储中 主要介绍了下,如何使用jeect-boot微服务将文件上传至obs中 ...
- ElasticSearch基于snapshot和华为云OBS的备份
微信公众号:运维开发故事,作者:double冬 0 背景 任何一个存储数据的软件,都需要定期的备份数据.es replica提供了运行时的高可用保障机制,可以容忍少数节点的故障和部分数据的丢失,但是整 ...
- 华为云OBS深度体验之迁移
一.背景 对象存储我相信并不是什么新鲜的概念,最早的时候我们采用自建NFS的方式来实现文件共享,随着云计算的发展,逐渐就衍生除了对象存储服务,华为云有OBS,阿里云有OSS,腾讯云有COS,各大云计算 ...
- 基于华为云obs实现文件上传下载(技术栈mysql+springboot+Maven+jsp+java)的技术分享
基于华为云obs实现文件上传下载(技术栈mysql+springboot+jsp+java)的技术分享 obs实现文件上传下载 前言 一.OBS是什么? 二.使用步骤 1.1 前期准备 2 工具的内容 ...
- 使用rclone工具实现华为云OBS至AWS S3数据迁移同步
1. 背景 项目需要将华为云的OBS对象存储服务的存储桶bucket的内容迁移复制到AWS云的S3存储桶中,AWS中暂无实现改需求的云服务,所以采用开源的第三方软件rclone来实现. rclone可 ...
- sscom串口网络数据调试器使用post方法向华为云obs桶上传文件和图片
原贴地址:sscom串口网络数据调试器使用post方法向华为云obs桶上传文件和图片-云社区-华为云 [摘要] 之前发了文章"postman使用post方法向华为云obs桶上传文件和图片&q ...
- 前端js华为云obs断点续传上传
前端js华为云obs断点续传上传 断点续传上传就是将待上传的文件分成若干份分别上传,并实时地将每段上传结果统一记录在断点续传记录对象中,仅当所有分段都上传成功时返回上传成功的结果,否则在回调函数中返回 ...
最新文章
- 【连载】高效人士的116个IT秘诀(第2版)——秘诀24为你的时间建一个构造图
- 线程安全与可重入函数的区别及联系
- Grub error17:Cannot mount selected partition启动错误的解决
- fatal error C1900: Il mismatch between 'P1' version '20060201' and 'P2' version '20050411'
- 全球及中国汽车涂料市场前景态势与投资渠道分析报告2022版
- python requests get请求_python+requests+new——get请求各种情况
- PHP中将首字母大写的函数,在PHP中,使用()函数来将单词首字母转换为大写。
- iPad开发(相对于iPhone开发时专有的API)
- (cons '(贰 . 输入/输出) 《为自己写本-Guile-书》)
- sql server 2008安装的时候选NT AUTHORITY\NEWORK SERVICE 还是选 NT AUTHORITY\SYSTEM ?
- Fxfactory插件:光雾滤镜插件PHYX Stylist
- 神经网络求解二阶常微分方程(代码)
- Kafka性能监控与优化
- VB.NET学习笔记:使用Random类生成随机数(不重复、数字、字母)
- 蓝牙鼠标链接Win10需要“输入MI MOUSE BT3.0的PIN”的解决方案
- vuex报错 this.$store显示undefined
- 电表水表数据采集系统
- 基于苹果CMS系统的双端视频播放APP源码+视频教程
- 开源漏洞深度分析|CVE-2022-25167 JNDI命令执行漏洞
- 静态网页和动态网页—HTML(htm)文件和aspx(asp)文件
热门文章
- EMERGENCYEUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEYRE NOT
- 定时关机软件里的锁定计算机,怎么让电脑定时关机设置大全
- 详解物理学四大神兽————芝诺的乌龟
- 服务器mgmt口监控协议,服务器如何查看mgmt地址
- word文档分栏怎么设置
- RAII惯用法:C++资源管理的利器
- java 设计连连看_软件设计之基于Java的连连看小游戏(一)——开题及游戏首页的制作...
- xp,linux双系统,如何在XP下安装linux实现双系统!
- 用计算机证明有限,四色定理-四色定理已利用计算机证明,但能否给出简洁的证明方法吗 爱问知识人...
- php doc生成pdf文件怎么打开乱码,phpexcel 导出pdf文件乱码,该如何解决