Ops 适配器实现详细信息
你可能会发现,在修改或以编程方式配置 Ops 适配器时,了解 Ops 适配器的以下方面很有用。
注意
Ops 适配器是使用适配器框架生成的。 有关使用框架生成适配器的信息,请参阅 开发自定义适配器。
批处理
适配器一次处理一条消息,以便单独处理每条消息,一次只按一个顺序执行回滚操作。 尽管适配器一次处理一条消息,但它使用批大小为 1 的批处理来执行此操作。 这样,可以更轻松地修改适配器以批量处理消息。
事务处理
适配器使用 Microsoft .NET Framework System.Transactions 设施提供的事务工具。 适配器创建新的 CommitableTransaction 并将其与 TransactionScope 一起使用。 适配器在此事务的上下文中调用 Initialize 和 Execute 方法。 调用程序集中的代码可以通过使用 Transaction.Current 静态方法获取事务上下文来参与事务。 示例错误处理程序不使用此功能。 有关 System.Transactions 的详细信息,请参阅.NET Framework类库版本中的“System.Transactions 命名空间”。
处理错误报告以外的数据
在解决方案中,适配器处理来自新错误报告功能的错误报告消息。 但是,由于 Execute 方法将字节数组作为其唯一参数,因此没有任何具体限制可以传递给 Execute 方法的内容。
以编程方式创建端口时使用适配器
从代码创建端口时,可以指定适配器。 下表显示了自定义属性名称及其与显示名称的对应方式。
发送自定义属性名称 | 显示名称 |
---|---|
DotNetAssemblyStrongName | DotNetAssemblyStrongName |
DotNetClassName | DotNetClassName |
InitializationData | InitializationData |
TransportLocationUri | 不适用。 |
所有属性都是字符串值。 从程序集名称和类名构造 TransportLocationUri 属性的值。 URI 的值 OPS://< DotNetAssemblyStrongName>/<DotNetClassName> ,其中占位符将替换为相应自定义属性的值。
有关从代码创建端口的信息,请参阅 如何创建 MSMQ 接收位置和从代码发送端口。