Oracle Notification云服务(ONS)快速入门

2024-02-04 12:48

本文主要是介绍Oracle Notification云服务(ONS)快速入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ONS于2018年12月发布,详见这里。

ONS基础

ONS基于发布订阅机制,ONS的使用分两步:

  1. 建立主题(Topic)
  2. 建立订阅(Subscription),订阅协议支持邮件,PagerDuty和HTTPS(Custom URL)

如何发布消息到Topic呢?手工方式如下:
在这里插入图片描述
自动方式可以使用Oracle Event Service (OES)与ONS对接,OES Rule的Action中有一项是ONS。

ONS的邮件订阅示例可参见 Quick Start guide。

PagerDuty的通知和邮件非常类似,首先需要在PagerDuty网站注册,可以免费14天。
然后创建服务,参见这里。
Events FAQ,integration type选Custom Event Transformer
完成后,你得到一个Integration Key,这时在ONS中与PagerDuty集成唯一需要输入的变量,其它部分都是固定的,格式如下:

https://events.pagerduty.com/integration/<integrationkey>/enqueue

和邮件类似,配置完成后初始状态为Pending,需要在PagerDuty中点击SHOW DETAIL确认:
在这里插入图片描述
展开,在上部看到的href即在ONS中填入的URL,底部是确认URL,确认后订阅的状态变为Active:
在这里插入图片描述
确认后的页面如下:
在这里插入图片描述
然后就可以发送测试消息了。

如果订阅类型为HTTPS(Custom URL),可参见此文。

ONS进阶

可参照这篇文档:Complete Developers Guide To The Oracle Notification Service
胡子哥其它几篇Blog让人心碎,这篇文章还算全面和靠谱。
这篇文章的第一部分涵盖了ONS的基础知识。

通过Java SDK发送通知

前面提到,可以通过ONS服务界面发送测试通知,本文给出了用Java SDK发送通知的示例。
首先在ONS中创建Topic及邮件订阅。记录Topic OCID。
剩下的过程如下:

# 克隆作者的示例项目
$ git clone https://github.com/recursivecodes/ons-demo.git
$ cd ons-demo
# 设置JAVA_HOME路径,可以通过rpm -ql找到路径
$ export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64
$ export TOPIC_ID=ocid1.onstopic.oc1.eu-frankfurt-1.aaaa...qnia

作者把Region写死在应用中,因此需要将代码中的us-phoenix-1替换为你创建Topic的区域,例如我的Topic是在eu-frankfurt-1区域创建的,因此将其替换为eu-frankfurt-1
完整的代码如下:

package codes.recursive;import com.oracle.bmc.auth.ConfigFileAuthenticationDetailsProvider;
import com.oracle.bmc.ons.NotificationDataPlaneClient;
import com.oracle.bmc.ons.model.MessageDetails;
import com.oracle.bmc.ons.requests.PublishMessageRequest;public class Ons {public void sendNotification(String title, String message) throws Exception {String topicId = System.getenv("TOPIC_ID");if( topicId == null ) {throw new Exception("Please set a TOPIC_ID environment variable!");}ConfigFileAuthenticationDetailsProvider provider =  new ConfigFileAuthenticationDetailsProvider("DEFAULT");NotificationDataPlaneClient client = NotificationDataPlaneClient.builder().region("eu-frankfurt-1").build(provider);MessageDetails messageDetails = MessageDetails.builder().title(title).body(message).build();PublishMessageRequest publishMessageRequest = PublishMessageRequest.builder().messageDetails( messageDetails ).topicId(topicId).build();client.publishMessage( publishMessageRequest );}}

主程序如下,没有修改:

package codes.recursive;import java.util.Date;public class OnsSendExample {public static void main(String... args) throws Exception {Ons ons = new Ons();ons.sendNotification("Test from Java","This is a test notification sent by the Java SDK at " + new Date().toString());}}

运行Java程序,发送通知:

$ ./gradlew run> Task :ons-demo-send:run
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.BUILD SUCCESSFUL in 4s
2 actionable tasks: 2 executed

然后在邮箱中可看到通知:
在这里插入图片描述

通过Cloud Event发送通知

实际就是与OES(Oracle Event Service)的集成,OCI中的计算,存储,网络, 数据库等服务均支持事件与通知服务的集成。此不赘述。

通过Service Alarm发送通知

实际就是在Monitoring服务中集成了ONS。
文中给出的示例是监控对指定bucket的List次数在1分钟内超过1次数,发送通知。
在Monitoring服务中配置Alarm略。
最后接受到的邮件通知如下:
在这里插入图片描述

通过HTTPS(Custom URL)接收通知

测试完邮件,PagerDuty,就剩下HTTPS没试过了。
这个例子使用Zaiper来生成我们需要的Custom URL。
首先需要注册账号,14天免费使用高级功能。
然后在Zaiper中新建一个Zap,包含两个部分的定义:
在这里插入图片描述
第1部分创建Webhook,会生成相应的URL,例如:

https://hooks.zapier.com/hooks/catch/648.../oh6.../

第2部分在Github中新建一个Issue(需要提供Github账号)。
注意右上角的On必须打开。
然后在OCI中创建Topic的Subscription,填入URL:
在这里插入图片描述
注意,订阅也需要确认,但确认的地方不在Zaper,而是在Github中的issue里:
在这里插入图片描述
确认完,再发送测试消息,在Github中就新建的issue就可以包含来自ONS中的Raw Message了:
在这里插入图片描述

这篇关于Oracle Notification云服务(ONS)快速入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677567

相关文章

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多