BizTalk 2013文件在非事件状态下接收位置触发器

BizTalk 2013文件在非事件状态下接收位置触发器,biztalk,biztalk-2013,Biztalk,Biztalk 2013,我有一个文件接收位置,计划在一天中的特定时间运行。如果接收位置无法在该位置找到任何文件,我需要触发警报或邮件 我知道我可以创建自定义组件,也可以使用BizTalk 360来创建自定义组件。但我正在寻找一些现成的BizTalk功能。BizTalk不太擅长在非事件上触发。非事件是指未发生但仍代表某个场景的事件 你能做的是: 在自定义SQL表中插入触发接收位置的任何文件的文件名。 每天一次定时任务适配器或通过存储过程轮询,您将触发对SQL表的查询,该查询仅在当天没有记录的情况下创建消息。 还要考虑清理

我有一个文件接收位置,计划在一天中的特定时间运行。如果接收位置无法在该位置找到任何文件,我需要触发警报或邮件


我知道我可以创建自定义组件,也可以使用BizTalk 360来创建自定义组件。但我正在寻找一些现成的BizTalk功能。

BizTalk不太擅长在非事件上触发。非事件是指未发生但仍代表某个场景的事件

你能做的是:

在自定义SQL表中插入触发接收位置的任何文件的文件名。 每天一次定时任务适配器或通过存储过程轮询,您将触发对SQL表的查询,该查询仅在当天没有记录的情况下创建消息。 还要考虑清理:这种方法需要删除任何现有记录


另一个选项可以是带有自定义c程序的计划任务,该程序仅在没有输入文件的情况下才会创建文件,等等。

这里有一个现成的解决方案:


基本上,它是一个编排,侦听来自该接收端口的任何消息并重置计时器。如果计时器过期,它可以做一些事情。

顺序护航解决方案应该可以工作,但我会关注一些事情:

当其他订阅服务器宕机时,它可能会消耗良好的消息,这可能会导致您错过通常认为订阅失败的内容。 长时间运行的业务流程可能很难管理和维护。听起来这辆车好像要跑一整天/一夜。 我喜欢彼特的建议,但我想再详细说明一下:

创建一个表,如下所示:

创建表tFileEventNotify ReceiveLocationName VARCHAR255非空主键, LastPickupDate日期时间不为空, NextExpectedDate日期时间不为空, NotificationSent位为空, 约束检查\u文件事件通知\u日期检查NextExpectedDate>LastPickupDate ; 您还可以为此创建一个过程,每次从自定义管道或业务流程接收该位置上的文件时,都应该调用该过程,如

创建过程usp\U Mrg\U FileEventNotify @rlocName varchar255, @LastPickupDate日期时间, @NextPickupDate DATETIME 像 开始 如果存在,请从tFileEventNotify中选择1,其中ReceiveLocationName=@rlocName 开始 UPDATE tFileEventNotify SET LastPickupDate=@LastPickupDate,NextPickupDate=@NextPickupDate,其中ReceiveLocationName=@rlocName; 终止 其他的 开始 插入tFileEventNotify ReceiveLocationName、LastPickupDate、NextPickupDate值@rlocName、@LastPickupDate、@NextPickupDate; 终止 终止 然后,您可以创建一个具有以下轮询数据可用语句的轮询端口:

从tFileEventNotify中选择1,其中NextPickupDate并编写一个过程,从该表生成一条消息,然后将其映射到通过SMTP端口或任何其他您想要使用的通知机制发送的电子邮件。您甚至可以向tFileEventNotify添加列,如EmailAddress或SubjectLine等。您可能希望向表中添加一个字段,以指示通知是否已发送,具体取决于轮询间隔的大小。如果您希望每次都发送它,您可以忽略该部分。

一个选项是设置BAM警报,以便在白天没有收到文件时触发。

我可能会修改此选项,使其具有一个包含NextExpectedDate的表,并在每次收到文件时更新该表。然后,您可以让作业/轮询过程评估NextExpectedDate是否