关于 Mirth Connect Interface Engine 的 dbConn.executeCachedQuery(SQLStatement) 问题

Question to dbConn.executeCachedQuery(SQLStatement) on Mirth Connect Interface Engine

由于Oracle DB中进程和会话的最大限制设置太低,有时会出现以下错误:

DBConnection - java.sql.SQLException: Listener refused the connection with the following error: ORA-12516, TNS:listener could not find available handler with matching protocol stack

由于 dbConn.executeCachedQuery(SQL声明)与 Mirth

中的 DatabaseConnection Class

所以这些是我的问题:

  1. 有什么办法可以把这个response/exception扔到频道里吗?
  2. SQL查询的所有数据是否异常"lost",如果出现这个错误还是有自动重试?
  3. 是否有处理此问题的最佳实践(例如首先使用 getConnection() 方法检查连接)?

我会按顺序回答你的问题:

1) 如果您使用的是 javascript 连接器,那么您应该在启动连接时将其放入 try catch 中。在捕获中,只需将错误作为 Logger.Error(exceptionGoesHere).

如果您使用的是数据库连接器,这应该会自动抛出到日志中。为确保您在频道级别启用了日志记录,请访问 Mirth Connect 服务器管理器,单击服务器选项卡并确保频道日志级别至少设置为错误。

2) Mirth Connect 的工作方式,每次启动消息时,它都会命中 Mirth DB 的特定点以保存消息在该时间点的状态。这就是 Mirth 保证消息传递的方式。话虽如此,您始终可以 'retry' 手动发送。否则,如果您使用的是数据库连接器,则在数据库 Reader 设置部分下有一个选项可以为您处理此问题。重试让您可以选择 select 重试次数以及以毫秒为单位的重试间隔。当我在那里工作时,默认设置为 10 秒后重试 3 次。

3) 使用默认的数据库连接器。一切都已为您内置。将额外的处理放在转换器中以处理其他任何事情。如果一切都已经建成,不要试图重新发明轮子是最好的做法。

如果你坚持使用代码解决方案,那么请确保你所有的代码都在一个try catch中,并确保你的catch实际上是在logging out error异常。