有没有办法在没有返回数据时取消Mirth Channel目标文件writer。每次运行频道时我都不想创建文件。通道需要每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();
答案 0 :(得分:1)
您始终可以排除该目的地处理邮件。
例如,如果某个通道有多个目标,并且每条消息只需要由一个目标处理,则通过在源转换器中调用destinationSet.removeAllExcept(connectorName),只有该目标才会收到该消息。这些目标将没有存储数据,也不会显示在消息浏览器中。这是对每个目标进行过滤的替代方法,可以节省处理时间和磁盘空间。
答案 1 :(得分:1)
将代码放在Destination Filter 而不是 Transformer 中应该会有效。
在if语句之后添加:
else {
return false;
}
如果您有数据,它将运行您的转换并将其传递给目标。 如果不这样做,它将过滤消息并对目的地不执行任何操作。