enter image description here请让我知道如何在BizTalk中消息失败以及事件查看器中出现错误时获取电子邮件通知。
答案 0 :(得分:0)
“正确”的方法是使用Windows和其他平台的监视工具。
首先,作为您的网络或服务器团队,如果他们拥有诸如SCOM或Splunk之类的工具,无论如何它们都应使用它们来监视服务器。然后,您可以配置所需的任何规则,包括电子邮件。
在BizTalk Apps中,只需确保在异常处理代码中创建Windows事件(事件查看器)。
答案 1 :(得分:0)
我认为这取决于您的解决方案。在我开发的解决方案中,我已经确定了由于错误转换,缺少字段等导致的消息路由的大多数故障点。然后将这些故障路由到业务流程,该业务流程专门仅发送SMTP电子邮件以设置地址。这对我公司的要求来说效果很好。 -您可以通过快速的Google找到很多SMTP编排示例。.我开始here
与此同时-对于未知数,我还设置了一个powershell脚本,通过电子邮件发送Windows Log Event Viewer的最后一条消息。我已经使用BizTalk管理控制台创建了一个自定义查看器。
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">*[System[Provider[@Name='BizTalk DW Reporting' or @Name='BizTalk Server' or @Name='BizTalk Server Deployment' or @Name='BizTalk Server EDI' or @Name='ENTSSO' or @Name='XLANG/s'] and (Level=1 or Level=2)]]</Select>
</Query>
</QueryList>
,然后将其导出到Windows任务计划中,每当它检测到有新条目落在自定义查看器中时,就会触发powershell脚本。
我遵循了here为powershell脚本提供的粗略原则。
希望这会为您指出所需的正确方向。可能有更好的解决方案,但是效果很好。
这是我正在使用的powershell脚本
$event = get-eventlog -LogName Application -Source "XLANG/s","BizTalk Server","BizTalk DW Reporting","BizTalk Server Deployment","BizTalk Server EDI","ENTSSO" -EntryType "Error" -newest 1
#get-help get-eventlog will show there are a handful of other options available for selecting the log entry you want.
$eventtime = $event.TimeGenerated
#ignore any messagebox errors
if (($event.EntryType -eq "Error" -and $event.EventID -inotin 6998, 10514))
{
$Source = $event.Source
$PCName = $env:COMPUTERNAME
$EmailBody = "$Source Error captured at " + $event.TimeGenerated + " in windows error log on BizTalk-UAT server: `n`n" + $event.Message
$EmailFrom = "????-BizTalk-UAT@???.com"
$EmailTo = @('????-BizTalk-UAT@???.com')
$EmailSubject = "BizTalk-UAT Server - Windows Log - " + $event.EntryType
$SMTPServer = "mail.????.com"
Write-host "Sending Email" $EmailFrom "To" $EmailTo
Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $EmailSubject -body $EmailBody -SmtpServer $SMTPServer
}
else
{
write-host "No error found"
write-host "Here is the log entry that was inspected:"
$event
}