读取和检索消息介绍
更新:2007 年 11 月
有几点在读取和检索消息时需要记住的事项。
锁定对队列的访问
执行接收操作时,可能需要暂时阻止其他用户也从正在使用的队列中移除消息。可以通过将该队列的 DenySharedReceive 属性设置为 true 来实现此目的。设置 DenySharedReceive 可以防止任何其他用户在您释放该队列的使用权之前,移除该队列中的消息。释放队列可以通过垃圾回收或者通过调用 Close 方法来实现。
要检索的属性
消息具有大量的属性,筛选出所需的属性使您能够集中在仅同您有关的信息上。例如,如果不使用事务性消息,则可能不需要检索同事务关联的属性。在这种情况下,可以将 MessagePropertyFilter 的 IsFirstInTransaction、IsLastInTransaction、TransactionId 和 TransactionStatusQueue 属性均设置为 false。无论 MessageQueue 组件的实例何时从队列中获得消息,都不会检索这些属性所对应的任何属性值。有关更多信息,请参见如何:指定与消息一起检索的属性。
为接收到的消息指定格式
从队列中读取消息时,在操作消息的过程中有一个格式化程序对象用来序列化和反序列化该消息的内容。默认情况下,XmlMessageFormatter 对象与您创建的任何 MessageQueue 组件实例关联,您可以通过在该对象上设置一些必要的属性来使用它接收消息。还可以使用其他各种可用的格式化程序对象;有关可用的格式化程序的更多信息,请参见消息序列化。
XmlMessageFormatter 使用可读的 XML 字符串将对象和基元数据类型保持到消息中和消息之外。当要使用此格式化程序检索消息时,应设置 TargetTypeNames 或 TargetTypes 属性以指示应如何处理最后所得到的消息。如果要使用另一个格式化程序对象,属性将不同。