Javascript 如何在Mirth中重试目标转换器中的异常

Javascript 如何在Mirth中重试目标转换器中的异常,javascript,mirth,Javascript,Mirth,我有一个接收消息的通道,从中提取一些信息,然后使用目标转换器从外部数据库中丰富这些信息,并将它们发送到另一个通道 转换器中的处理是用Javascript编写的,当消息位于数据库中的数据之前时,有时会失败。发生这种情况时,我想等一分钟再试一次 现在,我只是在转换器中抛出异常,允许我检查消息。我试图在目标上设置重试,但没有成功。我觉得只有当目的地本身抛出错误时才会重试 当目标转换器引发异常时,我如何重试?在目标转换器中等待所需的时间,然后将相同的消息路由回(router.routeMessageBy

我有一个接收消息的通道,从中提取一些信息,然后使用目标转换器从外部数据库中丰富这些信息,并将它们发送到另一个通道

转换器中的处理是用Javascript编写的,当消息位于数据库中的数据之前时,有时会失败。发生这种情况时,我想等一分钟再试一次

现在,我只是在转换器中抛出异常,允许我检查消息。我试图在目标上设置重试,但没有成功。我觉得只有当目的地本身抛出错误时才会重试


当目标转换器引发异常时,我如何重试?

在目标转换器中等待所需的时间,然后将相同的消息路由回(router.routeMessageByChannelId)同一通道(即,此目标所属的通道)进行重新处理。为此,您需要将源连接器的源队列从关闭转到打开。

等待是如何工作的?如果我只是对javascript代码进行一次延迟,那么整个处理过程似乎都停止了——我还需要其他消息来处理。你能给我一个例子,如何在JavaScript中将消息重新路由到同一个频道吗?我没有看到你的频道,我不知道你有多少个目的地。您可以将消息发送到另一个“休眠”一定时间的频道,然后将消息发回或类似的内容。要重新路由消息,您需要如下内容:router.routeMessageByChannelId(channelId,msg);其中channelId是一个变量,如它所说,它包含当前的通道Id。为了解决过去类似的问题,我倾向于使用一些Java创建内存中的多线程排队机制(这样我就可以一直重试所有消息,而不必等到第一次失败清除后再处理下一次),或者在Mirth DB中创建一个表,以便更好地控制排队机制,使用JS读取器/数据库读取器在某个轮询周期内重新处理消息的结果集。