无法路由已发布的消息,因为未找到订户

时间:2015-12-02 17:31:48

标签: biztalk biztalk-2013r2

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

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

包装说明: 使用存储过程将CSV平面文件导入SQL Server。

enter image description here

故障:

创建表格代码:

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]

创建存储过程代码:

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

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

Account Name,Service Address,Account Number
JOE BLOW,ADDRESS X CITYX IL 61999,932F623Y52

我正在使用WCF连接到数据库 enter image description here

我正在使用存储过程 enter image description here

我为平面文件创建了一个架构 enter image description here

接收端口配置

enter image description here enter image description here enter image description here

发送端口配置

enter image description here enter image description here enter image description here

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

enter image description here

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

enter image description here

我删除了接收组件并分配了平面文件消息 enter image description here

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

enter image description here

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

enter image description here

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

enter image description here enter image description here enter image description here

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

enter image description here

在服务器中:

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

enter image description here enter image description here enter image description here

发送端口

enter image description here enter image description here

我配置应用程序

enter image description here

我开始申请:

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

我删除文件,文件消失,我收到错误

我收到以下错误

  

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

     

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

enter image description here enter image description here

2 个答案:

答案 0 :(得分:3)

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

当您收到该错误时,您需要做的就是查看Suspended消息并查看它的外观,并将其与BizTalk Administrator中的订阅进行比较。

在你的情况下,问题似乎是你没有一个接收管道,它有一个平面文件Dissasembler,上面指定了平面文件方案,它将把它转换为XML并用Message Type上下文属性发布它使用模式名称

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

答案 1 :(得分:3)

你说:

  

“我已将软件包部署到服务器,未部署到GAC,然后我手动在GAC中注册了该组件。”

但是,这表示BizTalk Server的部署过程不正确。您应手动使用GAC。此外,您没有指明您使用BizTalk Server注册(导入)组件的任何地方。

如果没有导入,运行时不会看到任何工件,因此找不到架构。

如果您在本地运行(并且您应该在此处运行)只需从Visual Studio部署,所有内容都将自动注册并进行GAG。

如果要部署到远程服务器(不能是DEV / TEST BizTalk实例),则必须从构建计算机导出.msi或使用BizTalk Deployment Framework创建部署包。