MessagePropertyFilter Class
Controls and selects the properties that are retrieved when peeking or receiving messages from a message queue.
For a list of all members of this type, see MessagePropertyFilter Members.
System.Object
System.Messaging.MessagePropertyFilter
[Visual Basic] Public Class MessagePropertyFilter [C#] public class MessagePropertyFilter [C++] public __gc class MessagePropertyFilter [JScript] public class MessagePropertyFilter
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Remarks
Setting the MessagePropertyFilter on a MessageQueue instance controls the set of properties that are retrieved when peeking or receiving a message. The filter is set on the instance of MessageQueue that retrieves the message information. When you set a MessagePropertyFilter Boolean-valued member to false, you prevent the information of the associated Message property from being retrieved by the MessageQueue.
There are several filter properties that are not Boolean values. They are integer values that get or set the default sizes of the Message.Body, Message.Extension, or Message.Label.
Retrieving a limited set of properties helps improve performance because smaller amounts of data are transferred from the queue.
Note When setting a property on MessagePropertyFilter, you are only indicating whether that property is retrieved when a message is received or peeked. You are not changing the associated property value for the Message.
The MessagePropertyFilter constructor sets all filter properties to their default values, which for the Boolean values is false. See the constructor topic for the defaults assigned to the integer-valued properties.
Example
[Visual Basic, C#, C++] The following example sends 2 messages of different priorities to the queue, and retrieves them subsequently.
[Visual Basic] Imports System Imports System.Messaging Namespace MyProject _ '/ <summary> '/ Provides a container class for the example. '/ </summary> Public Class MyNewQueue '************************************************** ' Provides an entry point into the application. ' ' This example sends and receives a message from ' a queue. '************************************************** Public Shared Sub Main() ' Create a new instance of the class. Dim myNewQueue As New MyNewQueue() ' Send messages to a queue. myNewQueue.SendMessage(MessagePriority.Normal, "First Message Body.") myNewQueue.SendMessage(MessagePriority.Highest, "Second Message Body.") ' Receive messages from a queue. myNewQueue.ReceiveMessage() myNewQueue.ReceiveMessage() Return End Sub 'Main '************************************************** ' Sends a string message to a queue. '************************************************** Public Sub SendMessage(priority As MessagePriority, messageBody As String) ' Connect to a queue on the local computer. Dim myQueue As New MessageQueue(".\myQueue") ' Create a new message. Dim myMessage As New Message() If priority > MessagePriority.Normal Then myMessage.Body = "High Priority: " + messageBody Else myMessage.Body = messageBody End If ' Set the priority of the message. myMessage.Priority = priority ' Send the Order to the queue. myQueue.Send(myMessage) Return End Sub 'SendMessage '************************************************** ' Receives a message. '************************************************** Public Sub ReceiveMessage() ' Connect to the a queue on the local computer. Dim myQueue As New MessageQueue(".\myQueue") ' Set the queue to read the priority. By default, it ' is not read. myQueue.MessageReadPropertyFilter.Priority = True ' Set the formatter to indicate body contains a string. myQueue.Formatter = New XmlMessageFormatter(New Type() {GetType(String)}) Try ' Receive and format the message. Dim myMessage As Message = myQueue.Receive() ' Display message information. Console.WriteLine(("Priority: " + myMessage.Priority.ToString())) Console.WriteLine(("Body: " + myMessage.Body.ToString())) Catch ' Handle Message Queuing exceptions. ' Handle invalid serialization format. Catch e As InvalidOperationException Console.WriteLine(e.Message) End Try ' Catch other exceptions as necessary. Return End Sub 'ReceiveMessage End Class 'MyNewQueue End Namespace 'MyProject [C#] using System; using System.Messaging; namespace MyProject { /// <summary> /// Provides a container class for the example. /// </summary> public class MyNewQueue { //************************************************** // Provides an entry point into the application. // // This example sends and receives a message from // a queue. //************************************************** public static void Main() { // Create a new instance of the class. MyNewQueue myNewQueue = new MyNewQueue(); // Send messages to a queue. myNewQueue.SendMessage(MessagePriority.Normal, "First Message Body."); myNewQueue.SendMessage(MessagePriority.Highest, "Second Message Body."); // Receive messages from a queue. myNewQueue.ReceiveMessage(); myNewQueue.ReceiveMessage(); return; } //************************************************** // Sends a string message to a queue. //************************************************** public void SendMessage(MessagePriority priority, string messageBody) { // Connect to a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Create a new message. Message myMessage = new Message(); if(priority > MessagePriority.Normal) { myMessage.Body = "High Priority: " + messageBody; } else myMessage.Body = messageBody; // Set the priority of the message. myMessage.Priority = priority; // Send the Order to the queue. myQueue.Send(myMessage); return; } //************************************************** // Receives a message. //************************************************** public void ReceiveMessage() { // Connect to the a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Set the queue to read the priority. By default, it // is not read. myQueue.MessageReadPropertyFilter.Priority = true; // Set the formatter to indicate body contains a string. myQueue.Formatter = new XmlMessageFormatter(new Type[] {typeof(string)}); try { // Receive and format the message. Message myMessage = myQueue.Receive(); // Display message information. Console.WriteLine("Priority: " + myMessage.Priority.ToString()); Console.WriteLine("Body: " + myMessage.Body.ToString()); } catch (MessageQueueException) { // Handle Message Queuing exceptions. } // Handle invalid serialization format. catch (InvalidOperationException e) { Console.WriteLine(e.Message); } // Catch other exceptions as necessary. return; } } } [C++] #using <mscorlib.dll> #using <system.dll> #using <system.messaging.dll> using namespace System; using namespace System::Messaging; __gc class MyNewQueue { public: void SendMessage(MessagePriority priority, String* messageBody) { // Connect to a queue on the local computer. MessageQueue* myQueue = new MessageQueue(S".\\myQueue"); // Create a new message. Message* myMessage = new Message(); if (priority > MessagePriority::Normal) { myMessage->Body = S"High Priority: {0}", messageBody; } else myMessage->Body = messageBody; // Set the priority of the message. myMessage->Priority = priority; // Send the Order to the queue. myQueue->Send(myMessage); return; } public: void ReceiveMessage() { // Connect to the a queue on the local computer. MessageQueue* myQueue = new MessageQueue(S".\\myQueue"); // Set the queue to read the priority. By default, it // is not read. myQueue->MessageReadPropertyFilter->Priority = true; // Set the formatter to indicate body contains a String*. Type* p __gc[] = new Type* __gc[1]; p[0] = __typeof(String); myQueue->Formatter = new XmlMessageFormatter( p ); try { // Receive and format the message. Message* myMessage = myQueue->Receive(); // Display message information. Console::WriteLine(S"Priority: {0}", __box(myMessage->Priority)); Console::WriteLine(S"Body: {0}", myMessage->Body); } catch (MessageQueueException*) { // Handle Message Queuing exceptions. } // Handle invalid serialization format. catch (InvalidOperationException* e) { Console::WriteLine(e->Message); } // Catch other exceptions as necessary. return; } }; int main() { // Create a new instance of the class. MyNewQueue* myNewQueue = new MyNewQueue(); // Send messages to a queue. myNewQueue->SendMessage(MessagePriority::Normal, S"First Message Body."); myNewQueue->SendMessage(MessagePriority::Highest, S"Second Message Body."); // Receive messages from a queue. myNewQueue->ReceiveMessage(); myNewQueue->ReceiveMessage(); return 0;
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System.Messaging
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Assembly: System.Messaging (in System.Messaging.dll)
See Also
MessagePropertyFilter Members | System.Messaging Namespace | MessageQueue | MessageQueue.MessageReadPropertyFilter | Message