2011-04-05 22 views
10

Tengo una lista de más de 20 colas que deben agregarse como cola privada en MSMQ.agregar programáticamente colas privadas en MSMQ

¿Hay una manera de hacerlo utilizando

  1. línea de comandos

  2. de programación C#

Si hay una manera de hacer uso de algún tipo de script o .net programando entonces podría agregarlo sin ingresarlo manualmente y causar errores tipográficos.

Háganme saber.

gracias

Respuesta

18
using System.Messaging; 

//... 

void CreateQueue(string qname) { 
    if (!MessageQueue.Exists(qname)) MessageQueue.Create(qname); 
} 

Sólo puede crear colas privadas en el equipo local. Para más información ver: Creating Queues

+0

Richard, ¿sabe cómo establecer los permisos de forma programática también en C#? – irvinedotnet

+0

Use AccessControlList para configurar los permisos y luego "queue.SetPermissions()". Tenga en cuenta que MessageQueue.Create devolverá la cola. –

+0

Esto funcionó para mí ... gracias – irvinedotnet

2

para la línea de comandos, puede crear un archivo .vbs con los siguientes contenidos:

Option Explicit 

Dim objInfo 
Dim objQue 
Dim objMsg 
Dim strFormatName ' Destination 

strFormatName = "direct=os:.\private$\test" 

Set objInfo = CreateObject("MSMQ.MSMQQueueInfo") 
Set objMsg = CreateObject("MSMQ.MSMQMessage") 

objMsg.Label = "my message" 
objMsg.Body = "This is a sample message." 
objInfo.FormatName = strFormatName 
set objQue = objInfo.Open(2, 0) 

' Send Message 
objMsg.Send objQue 

' Close Destination 
objQue.Close 

Set objMsg = Nothing 
Set objInfo = Nothing 

msgbox "Done..." 
0

Un poco tarde en esto, sin embargo, sólo comenzó a trabajar con ellas.

Para agregar a la respuesta de Richard, puede crear colas públicas. necesita el nombre de host y el acceso de administrador a esa máquina.

public static MessageQueue CreatePrivate(string name) { 
     string path = string.Format(@".\private$\{0}", name); 
     if (!MessageQueue.Exists(path)) { 
      MessageQueue.Create(path); 
      return new MessageQueue(path); 
     } 
     return new MessageQueue(path); 
    } 

    public static MessageQueue CreatePublic(string hostname,string queuename) { 
     string path = string.Format(@"{0}\{1}", hostname,queuename); 
     if (!MessageQueue.Exists(path)) { 
      MessageQueue.Create(path); 
      return new MessageQueue(path); 
     } 
     return new MessageQueue(path); 
    } 
} 
Cuestiones relacionadas