如何配置 WCF-NetMsmq 发送端口
可以通过编程方式或使用 BizTalk Server 管理控制台来配置 WCF-NetMsmq 发送端口。
配置属性
BizTalk 资源管理器对象模型为具有 TransportTypeData 读/写属性的名为 ITransportInfo 的发送端口公开适配器特定的接口。 此属性接受 XML 字符串的名称-值对形式的 WCF-NetMsmq 发送端口配置属性包。
ITransportInfo 接口的 TransportTypeData 属性不是必需的。 如果未设置该属性,则适配器将使用 WCF-NetMsmq 发送端口配置的默认值,如下表所示。
下表列出了可在 BizTalk 浏览器对象模型中为 WCF-NetMsmq 发送端口设置的配置属性。
属性名称 | 类型 | 说明 |
---|---|---|
标识 | XML Blob 示例: <identity> <userPrincipalName value=“username@contoso.com” /> </身份> |
指定此发送端口预期的服务标识。 这些设置支持此发送端口对服务进行验证。 在客户端与服务进行握手的过程中,Windows Communication Foundation (WCF) 基础结构将确保预期服务的标识与此元素的值保持一致。 默认值为空字符串。 |
StaticAction | 字符串 | 为传出消息指定 SOAPAction 标头字段。 还可以通过消息上下文属性 WCF 设置此属性 。 管道或业务流程中的操作。 可以通过两种不同的方式指定此值:单个操作格式和操作映射格式。 如果以单个操作格式(例如 )设置此属性, http://contoso.com/Svc/Op1 则传出消息的 SOAPAction 标头始终设置为此属性中指定的值。如果以操作映射格式设置此属性,则传出 SOAPAction 标头由 BTS 确定。操作 上下文属性。 例如,如果此属性设置为以下 XML 格式和 BTS。Operation 属性设置为 Op1,WCF 发送适配器使用“”http://contoso.com/Svc/Op1作为传出 SOAPAction 标头。 <BtsActionMapping> <Operation Name=“Op1” Action=“http://contoso.com/Svc/Op1" /> <Operation Name=“Op2” Action=“http://contoso.com/Svc/Op2" /> </BtsActionMapping> 如果传出消息来自业务流程端口,则业务流程实例会动态设置 BTS。具有 端口的操作名称的 Operation 属性。 如果传出消息使用基于内容的路由进行路由,则可以设置 BTS。 管道组件中的操作属性。 默认值为空字符串。 |
OpenTimeout | System.TimeSpan | 指定一个时间跨度值来表示为完成信道打开操作提供的时间间隔。 默认值:00:01:00 |
SendTimeout | System.TimeSpan | 指定一个时间跨度值来表示为完成发送操作提供的时间间隔。 如果使用要求-响应发送端口,则此值指定完成整个交互的时间跨度(即使服务返回一条大消息)。 默认值:00:01:00 |
CloseTimeout | System.TimeSpan | 指定一个时间跨度值来表示为完成信道关闭操作提供的时间间隔。 默认值:00:01:00 |
EnableTransactional | Boolean | 指定目标服务的消息队列类型:事务性或非事务性。 如果此属性设置为 True,则此发送端口处理的每条消息仅传递一次,并且发送方会收到传递失败的通知。 若要通过事务性发送端口发送消息,必须将服务的 durable 和 exactlyOnce 绑定元素都设置为 True。 如果此属性设置为 False,则传输消息时没有送达保证。 默认值:True |
DeadLetterQueue | 枚举 - 无 - 不使用死信队列。 - 系统 - 使用系统范围的死信队列。 - 自定义 - 使用自定义死信队列。 |
指定死信队列,未能传输到应用程序的消息将传输到死信队列中。 有关传递到死信队列的消息的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框、发送、绑定选项卡。 注意:自定义死信队列仅在消息队列 (MSMQ) 4.0 中受支持,随 Windows Vista 一起发布。 默认值: System |
CustomDeadLetterQueue | 字符串 | 使用 net.msmq 方案为每个应用程序死信队列的位置指定完全限定的 URI,其中放置了已过期或传输或传递失败的消息。 例如 net.msmq://localhost/deadLetterQueueName。 死信队列是发送应用程序的队列管理器中的一个队列,用于放置传递失败的过期消息。 如果将 DeadLetterQueue 属性设置为 Custom,则此属性是必需的。 默认值为空字符串。 |
TimeToLive | System.TimeSpan | 指定一个时间范围,在此范围内消息有效,一旦超出此范围,消息将到期并被置于死信队列。 设置此属性是为了确保时间敏感消息在被此发送端口处理前不会过时。 队列中在指定的时间间隔内未由此发送端口使用的消息将被认为到期。 到期的消息将发送到称为死信队列的特殊队列。 死信队列的位置是使用 DeadLetterQueue 属性设置的。 默认值:1.00:00:00 |
UseSourceJournal | Boolean | 指定是否应将此发送端口处理的消息副本存储在源日记队列中。 默认值:False |
SecurityMode | 枚举 - 无 - 消息 - 运输 - 两者 有关 SecurityMode 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框中的“发送、安全性”选项卡的安全模式属性。 |
指定使用的安全类型。 默认值: Transport |
MsmqAuthenticationMode | 枚举 - 无 - WindowsDomain - 证书 有关 MsmqAuthenticationMode 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框中的“发送、安全性”选项卡中的 MSMQ 身份验证模式属性。 |
指定如何通过 MSMQ 传输对消息进行验证。 默认值: WindowsDomain |
MsmqProtectionLevel | 枚举 - 无:无保护。 - 签名:对消息进行签名。 - EncryptAndSign:对消息进行加密和签名。 若要使用此保护级别,必须为 MSMQ 启用 Active Directory 集成。 |
指定消息在 MSMQ 传输一级的保护方式。 默认值: Sign |
MsmqSecureHashAlgorithm | 枚举 - MD5 - SHA1 - SHA25 - SHA512 |
指定使用哈希算法计算消息摘要。 如果 MsmqProtectionLevel 属性设置为 None,则此属性不可用。 默认值: SHA1 |
MsmqEncryptionAlgorithm | 枚举 - RC4Stream - Aes |
指定在消息队列管理器之间传输消息时,将在网络上使用的消息加密算法。 仅当 MsmqProtectionLevel 属性设置为 EncryptAndSign 时,此属性才可用。 默认值: RC4Stream |
MessageClientCredentialType | 枚举 - 无 - Windows - 用户 - 证书 有关 MessageClientCredentialType 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框中的“发送、安全性”选项卡中的消息客户端凭据类型属性。 |
指定使用基于消息的安全性对客户端执行验证时所用的凭据类型。 默认值: Windows |
AlgorithmSuite | 枚举 有关 AlgorithmSuite 属性的成员名称的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框中的“发送、安全性”选项卡的算法套件属性。 |
指定消息加密和密钥包装算法。 这些算法与“安全策略语言”(WS-SecurityPolicy) 规范中指定的算法一致。 默认值: Basic256 |
ClientCertificate | 字符串 | 指定用于向服务验证此发送端口的 X.509 证书的指纹。 如果 ClientCredentialsType 属性设置为 Certificate,则此属性是必需的。 要用于此属性的证书必须安装到“当前用户”位置的“我的存储”中。 默认值为空字符串。 |
ServiceCertificate | 字符串 | 指定用于验证服务(此发送端口要将消息发送到的服务)的 X.509 证书的指纹。 要用于此属性的证书必须安装到“本地计算机”位置的“其他人员存储中。 默认值为空字符串。 |
AffiliateApplicationName | 字符串 | 指定用于企业单一登录 (SSO) 的关联应用程序。 默认值为空字符串。 |
UseSSO | Boolean | 指定是否使用单一登录检索客户端凭据,以便在目标服务器上进行验证。 默认值:False |
UserName | String | 当 UseSSO 属性设置为 False 时,指定用于向目标服务器进行身份验证的用户名。 不必采用“域\用户”格式设置此属性。 默认值为空字符串。 |
密码 | 字符串 | 当 UseSSO 属性设置为 False 时,指定用于对目标服务器进行身份验证的密码。 默认值为空字符串。 |
OutboundBodyLocation | 枚举 - UseBodyElement - 使用 BizTalk 消息正文部件为传出消息创建 SOAP Body 元素的内容。 - UseTemplate - 使用 OutboundXMLTemplate 属性中提供的模板为传出消息创建 SOAP Body 元素的内容。 有关如何使用 OutboundBodyLocation 属性的详细信息,请参阅 指定 WCF 适配器的消息正文。 |
指定传出 WCF 消息的 SOAP Body 元素的数据选择。 默认值: UseBodyElement |
OutboundXMLTemplate | 字符串 有关如何使用 OutboundXMLTemplate 属性的详细信息,请参阅 指定 WCF 适配器的消息正文。 |
为传出消息的 SOAP Body 元素的内容指定 XML 格式的模板。 如果 OutboundBodyLocation 属性设置为 UseTemplate,则需要此属性。 默认值为空字符串。 |
使用 BizTalk 管理控制台配置 WCF-NetMsmq 发送端口
您可以在 BizTalk 管理控制台中设置 WCF-NetMsmq 发送端口适配器变量。 如果没有为发送端口设置属性,将使用 WCF-NetMsmq 发送端口配置的默认值,如前表所示。
为 WCF-NetMsmq 发送端口配置变量
在 BizTalk 管理控制台中,创建一个新的发送端口或双击某个现有发送端口以对其进行修改。 有关详细信息,请参阅 如何创建发送端口。 配置所有发送端口选项,并在 UI 指南和开发人员 API 命名空间参考中的“常规”选项卡的“传输”部分中为“类型”选项指定 WCF-NetMsmq。
在“常规”选项卡上的“传输”部分中,单击“类型”旁边的“配置”按钮。
在 “WCF-NetMsmq 传输属性 ”对话框中的“ 常规 ”选项卡上,为 WCF-NetMsmq 发送端口配置终结点地址、服务标识和 SOAPAction 标头。 有关 WCF-NetMsmq 传输属性对话框中的“常规”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框、发送、常规选项卡。
在 “WCF-NetMsmq 传输属性 ”对话框中的“ 绑定 ”选项卡上,配置超时和事务属性以及队列设置。 有关 WCF-NetMsmq 传输属性对话框中的“绑定”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框、发送、绑定选项卡。
在 “WCF-NetMsmq 传输属性 ”对话框中的“ 安全性 ”选项卡上,定义 WCF-NetMsmq 发送端口的安全功能。 有关 WCF-NetMsmq 传输属性对话框中的“安全性”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框、发送、安全性选项卡。
在 “WCF-NetMsmq 传输属性 ”对话框中的“ 消息 ”选项卡上,指定 SOAP Body 元素的数据选择。 有关 WCF-NetMsmq 传输属性对话框中的“消息”选项卡的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 WCF-NetMsmq 传输属性对话框、发送消息选项卡。
以编程方式配置 WCF-NetMsmq 发送端口
可使用以下格式设置属性:
<CustomProps>
<ServiceCertificate vt="8" />
<UseSSO vt="11">0</UseSSO>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
<SendTimeout vt="8">00:01:00</SendTimeout>
<OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
<MsmqProtectionLevel vt="8">Sign</MsmqProtectionLevel>
<OpenTimeout vt="8">00:01:00</OpenTimeout>
<UseSourceJournal vt="11">0</UseSourceJournal>
<AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
<SecurityMode vt="8">Transport</SecurityMode>
<CustomDeadLetterQueue vt="8" />
<ClientCertificate vt="8" />
<MsmqEncryptionAlgorithm vt="8">RC4Stream</MsmqEncryptionAlgorithm>
<StaticAction vt="8">http://www.northwindtraders.com/Service/Operation</StaticAction>
<MsmqSecureHashAlgorithm vt="8">Sha1</MsmqSecureHashAlgorithm>
<EnableTransaction vt="11">-1</EnableTransaction>
<TimeToLive vt="8">1.00:00:00</TimeToLive>
<MsmqAuthenticationMode vt="8">WindowsDomain</MsmqAuthenticationMode>
<DeadLetterQueue vt="8">System</DeadLetterQueue>
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
下面的代码段说明了如何创建 WCF-NetMsmq 发送端口:
// Use BizTalk Explorer object model to create new WCF-NetMsmq send port.
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<StaticAction vt=""8"">http://www.northwindtraders.com/Service/Operation</StaticAction>
<OpenTimeout vt=""8"">00:01:00</OpenTimeout>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication";
// Save
explorer.SaveChanges();
// Add a new static one-way send port
SendPort sendPort = application.AddNewSendPort(false, false);
sendPort.Name = "SampleSendPort";
sendPort.PrimaryTransport.TransportType = explorer.ProtocolTypes["WCF-NetMsmq"];
sendPort.PrimaryTransport.Address = "net.msmq://mycomputer/private/samplequeue";
sendPort.PrimaryTransport.TransportTypeData = transportConfigData; // propertyData; // need to change
sendPort.SendPipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruTransmit"];
// Save
explorer.SaveChanges();
另请参阅
WCF 适配器属性架构和属性
安装用于 WCF 适配器的证书
指定 WCF 适配器的消息正文
配置 WCF-NetMsmq 适配器
使用 WCF 适配器上下文属性配置动态发送端口