我没有太多使用Oracle Service Bus的经验,我正在尝试使用BigData设计日志记录解决方案。
正如我所读到的,OSB中的默认日志和报告活动会将数据放入域的服务器日志文件或我们设置服务器域的数据库中。如果我想将所有日志放入单独的BigData数据库中。我需要采用以下任何一种方法:
请告诉我一些关于我应该使用哪种方法的想法,如果可以,请提供理由,非常感谢。
答案 0 :(得分:1)
不是基于Log4j的weblogic中的日志框架吗?这意味着您可以使用JMSAppender(如果可以,可以谨慎地包装在Async log4j appender中)并根据需要处理它。
或者,如果您正在谈论OSB报告框架,那么有几个选择:
我不建议在中间没有异步步骤的情况下使用Web服务或数据库标注,因为您需要非常快速地记录和报告,并尽可能少地使用资源。
在您遇到负载时,您不希望记录到线程。我看到因为一次打嗝导致整个总线停机,因为日志记录数据库遇到了性能问题,这导致一堆开放线程试图登录它,导致线程饥饿或超时,导致更多的错误记录... < / p>
如果您有像JMS队列这样的缓冲区,那么您可以通过提前计划来处理峰值。您可以说&#34;实际上我想要一个10,000条消息的JMS队列,如果由于某种原因而溢出,我想(将溢出推送到另一个盒子上的单独队列)或(过滤掉所有非 - 必要的消息)或(抛出新消息)或(你选择的行动)。哦,是的,如果日志数据库失败,那么我将尝试3次提交,如果没有,将其移动到另一个队列&#34;。或者无论你想要什么。
答案 1 :(得分:0)
有多种方法可以实现这一目标。您可以使用报告活动来推送到JMS或使用日志活动。
您还可以编写一个小例程such as this(在OSB上或在其外部),它可以读取您正在记录的任何内容(例如通过日志活动以及打开时记录的其他元数据) monitoring OSB组件)并根据需要进行操作(例如将其推送到数据库或BigData存储)。
关键是要避免在每个管道/流程中编写显式服务调用,而上述方法使用standard OSB/ODL* loggers
* Oracle诊断日志记录