This morning, I uploaded a project containing a client base class called WSMQBase to the WSMQ workspace which demonstrates one way to queue messages with WSMQ. You can use this base class from within your applications to create queue components. WSMQBase handles the dirty work of connecting to a WSMQ Queue, initially creating the queue, and also making secure WSE2.0 web service requests.
I've also created example HelloWorldQueue class providing an example of just how to use this base class. Just to show you how simple it is to create, connect and send messages to a queue, here's the source code for the HelloWorldQueue class:
public
class HelloWorldQueue : WSMQBase
{
const string QUEUE_NAME = "Hello World Queue";
public HelloWorldQueue() : base(QUEUE_NAME){}
/// <summary>
/// Sends the hello world message.
/// </summary>
/// <param name="message">Message.</param>
public void SendHelloWorldMessage(string message)
{
// Wait for the connection
WaitForConnection();
// Create the secure request
MessageQueueServiceWse mqs = CreateSecureRequest();
SendQueueRequest qr = new SendQueueRequest();
qr.QueueName = QUEUE_NAME;
qr.Message = SerializationHelper.XmlSerialize(message);
// Send the message
mqs.Send(qr);
Trace.WriteLine("Message Successfully Added to Queue");
}
/// <summary>
/// Processs the hello world messages.
/// </summary>
/// <returns></returns>
public int ProcessHelloWorldMessages()
{
WaitForConnection();
// Create the secure request
MessageQueueServiceWse mqs = CreateSecureRequest();
QueueRequest qr = new QueueRequest();
qr.QueueName = QUEUE_NAME;
// Get array of all messages.
string [] serializedMessages = mqs.ReceiveAllMessages(qr);
int numberDispachedMessages = 0;
string message = String.Empty;
// Now loop and do something with each message
foreach(string serializedMessage in serializedMessages)
{
try
{
message = (String) SerializationHelper.XmlDeSerialize(serializedMessage, typeof(string));
Trace.WriteLine("Message Recieved:" + message);
numberDispachedMessages++;
}
catch (SoapException ex)
{
this.SendHelloWorldMessage(message);
Trace.WriteLine(ex.Message);
Trace.WriteLine(ex.InnerException);
}
}
return numberDispachedMessages;
}
}
That's it! This will reliably connect, send and receive messages to your queue.
-Brendan
Posted
Fri, Oct 1 2004 7:11 AM
by
Brendan Tompkins