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 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页