MessageQueue::Create Method (String^, Boolean)

 

Creates a transactional or non-transactional Message Queuing queue at the specified path.

Namespace:   System.Messaging
Assembly:  System.Messaging (in System.Messaging.dll)

public:
static MessageQueue^ Create(
	String^ path,
	bool transactional
)

Parameters

path
Type: System::String^

The path of the queue to create.

transactional
Type: System::Boolean

true to create a transactional queue; false to create a non-transactional queue.

Return Value

Type: System.Messaging::MessageQueue^

A MessageQueue that represents the new queue.

Exception Condition
ArgumentException

The path parameter is null or is an empty string ("").

MessageQueueException

A queue already exists at the specified path.

-or-

An error occurred when accessing a Message Queuing method.

You can use this overload to create a transactional queue in Message Queuing. You can create a non-transactional queue, by setting the transactional parameter to false or by calling the other overload of Create(String^).

To create a new instance of the MessageQueue class in your application and bind it to an existing queue, use the MessageQueueconstructor. To create a new queue in Message Queuing, call Create(String^).

The syntax for the path parameter depends on the type of queue it references, as shown in the following table.

Queue type

Syntax

Public queue

MachineName\QueueName

Private queue

MachineName\Private$\QueueName

Use "." for the local computer. For more syntax, see the Path property.

The following table shows whether this method is available in various Workgroup modes.

Workgroup mode

Available

Local computer

Yes

Local computer and direct format name

Yes

Remote computer

No

Remote computer and direct format name

No

The following code example creates public and private transactional queues. It sends a message to selected queues.

#using <system.dll>
#using <system.messaging.dll>

using namespace System;
using namespace System::Messaging;
ref class MyNewQueue
{
public:

   // Creates public transactional queues and sends a 
   // message.
   void CreatePublicTransactionalQueues()
   {

      // Create and connect to a public message Queuing queue.
      if (  !MessageQueue::Exists( ".\\newPublicTransQueue1" ) )
      {

         // Create the queue if it does not exist.
         MessageQueue::Create( ".\\newPublicTransQueue1", true );
      }


      // Connect to the queue.
      MessageQueue^ myNewPublicQueue = gcnew MessageQueue( ".\\newPublicTransQueue1" );

      // Create a transaction.
      MessageQueueTransaction^ myTransaction = gcnew MessageQueueTransaction;

      // Begin the transaction.
      myTransaction->Begin();

      // Send the message.
      myNewPublicQueue->Send( "My Message Data.", myTransaction );

      // Commit the transaction.
      myTransaction->Commit();
      if (  !MessageQueue::Exists( ".\\newPublicTransQueue2" ) )
      {

         // Create (but do not connect to) second public queue
         MessageQueue::Create( ".\\newPublicTransQueue2", true );
      }

      return;
   }


   // Creates private queues and sends a message.
   void CreatePrivateTransactionalQueues()
   {

      // Create and connect to a private Message Queuing queue.
      if (  !MessageQueue::Exists( ".\\Private$\\newPrivTransQ1" ) )
      {

         // Create the queue if it does not exist.
         MessageQueue^ myNewPrivateQueue = MessageQueue::Create( ".\\Private$\\newPrivTransQ1", true );
      }


      // Connect to the queue.
      MessageQueue^ myNewPrivateQueue = gcnew MessageQueue( ".\\Private$\\newPrivTransQ1" );

      // Create a transaction.
      MessageQueueTransaction^ myTransaction = gcnew MessageQueueTransaction;

      // Begin the transaction.
      myTransaction->Begin();

      // Send the message.
      myNewPrivateQueue->Send( "My Message Data.", myTransaction );

      // Commit the transaction.
      myTransaction->Commit();

      // Create (but do not connect to) a second private queue.
      if (  !MessageQueue::Exists( ".\\Private$\\newPrivTransQ2" ) )
      {
         MessageQueue::Create( ".\\Private$\\newPrivTransQ2", true );
      }

      return;
   }

};


// Provides an entry point into the application.
// This example creates new transactional queues.
int main()
{

   // Create a new instance of the class.
   MyNewQueue^ myNewQueue = gcnew MyNewQueue;

   // Create transactional queues.
   myNewQueue->CreatePublicTransactionalQueues();
   myNewQueue->CreatePrivateTransactionalQueues();
   return 0;
}

.NET Framework
Available since 1.1
Return to top
Show: