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

相关文章

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指