2015-10-26 61 views
0

我对Oracle服务总线没有太多经验,我正试图用BigData设计一个日志记录解决方案。使用BigData的Oracle服务总线

当我阅读时,OSB中的默认日志和报告活动将数据放入域的服务器日志文件或数据库中设置服务器域。如果我想将所有日志放入单独的BigData数据库中。我需要采取以下任一种方法:

  1. Java标注,使用JMS或其他技术将数据发送到bigdata服务器。
  2. Web服务标注,创建一个单独的Web服务来处理日志记录。
  3. 创建自定义报告提供程序来替换OSB报告中的默认报告提供程序。
  4. 别的东西

请告诉给我的一些想法什么方法,我应该使用,并请提供你的理由,如果你能,太感谢你了。

回答

1

不是基于Log4j的weblogic中的日志框架吗?这意味着您可以使用JMSAppender(如果可以的话,可能谨慎地包装在Async log4j appender中)并根据需要处理它。

或者,如果你在谈论的OSB报告框架,有几个选项:

  1. 配置默认JMS reporting provider(使用其希望被设置为东西比更好的底层SOAINFRA数据库默认的Derby实例),然后编写一个MDB,将报告从队列中取出并插入到SAS BigData中。
  2. 关闭JMS提供程序并使用custom provider,该程序可以执行任何您想要的操作。如果您愿意,您仍然可以执行两个步骤的过程,报告提供程序自己将报告放在JMS队列中,以便快速返回,而不同的MDB将消息关闭并使其保持自己的步调。

我不建议在没有异步步骤的情况下使用Web服务或数据库标注,因为您需要记录和报告非常快,并尽可能使用尽可能短的资源。

当您遇到负载时,您不希望记录到猪线程。由于日志数据库遭受了性能问题,导致大量开放线程尝试登录到线程,从而导致线程匮乏或超时,从而导致更多的错误日志记录,所以我看到整条总线因为一次打嗝而停止运行...

如果您有像JMS队列那样的缓冲区,那么您可以通过提前规划来处理峰值。你可以说“实际上我想要一个包含10,000个消息的JMS队列,并且如果由于任何原因导致溢出,我想(将溢出推送到另一个盒子上的单独队列)或者(过滤掉所有非必要消息)或(抛出新消息)或(你选择的动作)哦,是的,如果日志数据库失败,我会尝试3次提交,如果没有,将它移动到另一个队列中。或者任何你想要的。

+0

我们可以使用JMS和排队发送日志数据到大数据服务器?在这种情况下,Log4j日志记录可能不适用于我们。 所以我可以在java代码中使用java标注实现JMS,使其看起来像它的同步。 或者只是创建一个自定义报告提供程序,它执行相同的作业(使用JMS将日志数据发送到大数据服务器)并替换默认报告提供程序。 这项工作?谢谢。 –

+0

编辑我的主要问题,但总之,是的。 –

+0

非常感谢您的详细解答。 –

0

有多种方法可以做到这一点。您可以使用报告活动推送到JMS或使用日志活动。

你也可以写一个小程序such as this(无论是在OSB或外面),能够读取任何您登录(如通过当你打开OSB的monitoring所记录的日志活动也是额外的元数据组件),并根据需要使用它(例如将其推送到数据库或BigData存储区)。

关键是要避免写在每个管道/流显式服务电话和上面的方法(ES)使用standard OSB/ODL* loggers

*甲骨文诊断日志