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)
接收端口配置
发送端口配置
我创建了一条消息来接收平面文件
我创建了一条消息以将 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 管理控制台来解决此故障。
基本上,您的业务流程上的订阅与收到的消息上的上下文属性不匹配。
当您收到该错误时,您需要做的始终是查看挂起消息并查看其外观,并将其上下文属性与 BizTalk Administrator 中的订阅进行比较。
在您的情况下,问题似乎是您没有一个接收管道,该管道具有一个平面文件分解器,其上指定了平面文件方案,该方案会将其转换为 XML 并使用具有架构名称的消息类型上下文属性发布它
因此,发生的情况是,它将原始平面文件发布到没有消息类型的消息框,而消息类型也是编排订阅的内容,并且您没有特定的订阅规则来侦听来自该端口的消息,这些消息可以然后处理原始消息。因此它不知道如何处理该消息并因上述错误而暂停它。
| 归档时间: |
|
| 查看次数: |
9923 次 |
| 最近记录: |