【问题标题】:Is there a way to cancel a Mirth Channel destination file writer?有没有办法取消 Mirth Channel 目标文件编写器?
【发布时间】:2015-12-08 20:49:26
【问题描述】:

当没有返回数据时,有没有办法取消 Mirth Channel 目标文件写入器。我不想在每次运行频道时都创建一个文件。该通道需要每 2-5 分钟运行一次,以处理位于 sql server 中的队列中的任何待处理记录。

我正在使用 Mirth 频道查询 sql server 数据库并将数据输出为 CSV 文件。我正在使用 Mirth Connect Server 3.2.0.7628。

这是我在目标转换器上的脚本。 如果 result.Size() 不大于零,我尝试跳过添加到 tmp。 在 Mirth Connect 文档中找不到此用例。

var dbConn = DatabaseConnectionFactory.createDatabaseConnection('net.sourceforge.jtds.jdbc.Driver','jdbc:jtds:sqlserver://xx.xx.x.xx:1433/<dbname>',<user>,<password>);

var result1 = dbConn.executeCachedQuery("exec [z_stored_procedure] param1");

var i = 0;  
if (result1.size()>0)   
{   logger.debug(result1.size())
    while(result1.next())
    {        
          tmp.row += <row>
           <DataField1>"{result1.getString('DataField1')}"</DataField1>
           <DataField2>"{result1.getString('DataField2')}"</DataField2>                                            
          </row>; 
      } 
}

dbConn.close();

【问题讨论】:

    标签: mirth


    【解决方案1】:

    将您的代码放入目标过滤器而不是Transformer应该可以。

    在你的 if 语句之后,添加一个:

    else {
    return false;
    }
    

    如果您有数据,它将运行您的转换并将其传递给目标。 如果您不这样做,它将过滤消息并且对目标不执行任何操作。

    【讨论】:

      【解决方案2】:

      您始终可以将该目的地排除在处理消息之外。

      例如,如果一个通道有许多目的地并且每条消息只需要由一个目的地处理,通过在源转换器中调用destinationSet.removeAllExcept(connectorName),只有那个目的地会收到消息。这些目的地将没有存储数据,也不会显示在消息浏览器中。这是对每个目标进行过滤的替代方法,可以节省处理时间和磁盘空间。

      【讨论】:

      • 我知道这是旧的,但我已经浪费了一些时间试图让它工作,原因是快速阅读:)。所以,如果有人不能让它工作,请注意 destinationSet 仅在 SOURCE 转换器中可用!我很着急,试图链接目的地,让链中的第一个决定应该运行哪一个。当然,当您有时间真正了解有关该功能的更多信息并理解它时,这没有任何意义,但是您就可以了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多