由于找不到订阅者,无法路由已发布的消息

Int*_*eer 3 biztalk biztalk-2013r2

在服务器中运行 BizTalk 包时出现以下错误:

由于找不到订阅者,无法路由已发布的消息

包描述:使用存储过程将 CSV 平面文件导入 SQL Server。

在此输入图像描述

分解:

创建表代码:

CREATE TABLE [dbo].[Accounts](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [AccountName] [nvarchar](150) NULL,
    [ServiceAddress] [nvarchar](150) NULL,
    [AccountNumber] [nvarchar](50) NULL,
 CONSTRAINT [PK_Accounts] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

创建存储过程代码:

CREATE PROCEDURE [dbo].[InsertAccount]
    @AccountName AS NVARCHAR(150) ,
    @ServiceAddress AS NVARCHAR(150) ,
    @AccountNumber AS NVARCHAR(50)
AS 
    INSERT  INTO dbo.accounts
            ( AccountName ,
              ServiceAddress ,
              AccountNumber
            )
            SELECT  @AccountName ,
                    @ServiceAddress ,
                    @AccountNumber
Run Code Online (Sandbox Code Playgroud)

平面文件:将其命名为sample.csv

Account Name,Service Address,Account Number
JOE BLOW,ADDRESS X CITYX IL 61999,932F623Y52
Run Code Online (Sandbox Code Playgroud)

我正在使用 WCF 连接数据库 在此输入图像描述

我正在使用存储过程 在此输入图像描述

我为平面文件创建了一个架构 在此输入图像描述

接收端口配置

在此输入图像描述 在此输入图像描述 在此输入图像描述

发送端口配置

在此输入图像描述 在此输入图像描述 在此输入图像描述

我创建了一条消息来接收平面文件

在此输入图像描述

我创建了一条消息以将 XML 发送到 SQL

在此输入图像描述

我删除了接收组件并分配了平面文件消息 在此输入图像描述

我删除了发送组件并分配了存储过程消息

在此输入图像描述

我删除了存储过程的接收响应组件

在此输入图像描述

然后我删除了一个 Construct Message 组件来初始化 XML 文档并创建地图。

在此输入图像描述 在此输入图像描述 在此输入图像描述

我将包部署到服务器,没有部署到GAC,然后我手动在GAC中注册该组件。

在此输入图像描述

在服务器中:

我设置了所有接收和发送端口:

在此输入图像描述 在此输入图像描述 在此输入图像描述

发送端口

在此输入图像描述 在此输入图像描述

我配置应用程序

在此输入图像描述

我开始应用程序:

  • 接收位置启用
  • 发送端口已启动
  • 我完全停止并重新启动了应用程序。

我删除文件,文件消失,然后出现错误

我收到以下错误

消息传递引擎无法处理适配器提交的消息:FILE 源 URL:C:\Biztalk Test\Sales\SampleFile*.csv。详细信息:无法路由已发布的消息,因为未找到订阅者。如果订阅编排或发送端口尚未登记,或者订阅评估所需的某些消息属性尚未升级,则会出现此错误。请使用 Biztalk 管理控制台来解决此故障。

适配器“FILE”在接收位置“ServerReceiveLocation”上接收到的消息(URI 为“C:\Biztalk Test\Sales\SampleFile*.csv”)已暂停。错误详细信息:无法路由已发布的消息,因为未找到订阅者。如果订阅编排或发送端口尚未登记,或者订阅评估所需的某些消息属性尚未升级,则会出现此错误。请使用 Biztalk 管理控制台来解决此故障。

在此输入图像描述 在此输入图像描述

Dij*_*aaf 5

基本上,您的业务流程上的订阅与收到的消息上的上下文属性不匹配。

当您收到该错误时,您需要做的始终是查看挂起消息并查看其外观,并将其上下文属性与 BizTalk Administrator 中的订阅进行比较。

在您的情况下,问题似乎是您没有一个接收管道,该管道具有一个平面文件分解器,其上指定了平面文件方案,该方案会将其转换为 XML 并使用具有架构名称的消息类型上下文属性发布它

因此,发生的情况是,它将原始平面文件发布到没有消息类型的消息框,而消息类型也是编排订阅的内容,并且您没有特定的订阅规则来侦听来自该端口的消息,这些消息可以然后处理原始消息。因此它不知道如何处理该消息并因上述错误而暂停它。