2017-09-27 19 views
0
Imports System.Messaging 
Imports System.Collections 
Imports MSMQ 
Imports System.IO 
Imports System 
Imports System.Messaging.MessageQueue 
Imports System.Runtime.InteropServices 

Public Class PauseOutMessages 
    'Declare everything to be in the scope of all methods. 
    Dim mgmt As New MSMQManagement 
    Dim outqmgmt As MSMQOutgoingQueueManagement 
    Dim q As New MSMQApplication 
    Dim outgoingQueues As New ArrayList 
    Dim myQueue As New MessageQueue("FormatName:DIRECT=OS:myMachine\Private$\myQueue", QueueAccessMode.ReceiveAndAdmin) 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     For Each queue In q.ActiveQueues 
      If queue.IndexOf("DIRECT=") >= 0 Then 
       outgoingQueues.Add(queue) 
      End If 
     Next 

    End Sub 

    Private Sub Pause_Click(sender As Object, e As EventArgs) Handles Pause.Click 
     For Each queuePath In outgoingQueues 
      mgmt.Init(FormatName:=queuePath) 
      outqmgmt = mgmt.Pause() 
     Next 
    End Sub 

    Private Sub Restart_Click(sender As Object, e As EventArgs) Handles Restart.Click 
     For Each queuePath In outgoingQueues 
      mgmt.Init(FormatName:=queuePath) 
      outqmgmt = mgmt.Resume() 
     Next 
    End Sub 

    Private Sub Send_Click(sender As Object, e As EventArgs) Handles Send.Click 
     myQueue.Send("Test") 
     For Each queue In q.ActiveQueues 
      If queue.IndexOf("DIRECT=") >= 0 Then 
       outgoingQueues.Add(queue) 
      End If 
     Next 
    End Sub 
End Class 

Voici le code que j'utilise, en envoyant le message de test à un chemin inexistant, il est bloqué dans la file d'attente sortante où je veux pour pouvoir appeler MSMQOutgoingQueueManagement.Pause ou .Resume pour pouvoir démarrer et arrêter toutes les files d'attente sortantes.Obtention d'une erreur d'accès refusé lors d'une tentative de pause/reprise d'une file d'attente de messages sortants

Cependant, je continue d'obtenir une erreur sur mgmt.Pause() ou mgmt.Resume() indiquant que l'accès est refusé. Je n'arrive pas à trouver un moyen d'accéder aux propriétés des files d'attente sortantes pour pouvoir ajuster les paramètres de sécurité. Toute aide serait grandement appréciée!

+0

Est-ce que [Définir les autorisations MSMQ pour une file d'attente privée créée par un utilisateur différent] (https://stackoverflow.com/q/4603787/1115360) vous donne des indices? –

+0

Andrew Morton, je suis tombé sur ceci et quand j'ai fait un clic droit sur la file de messages sortants il n'y avait pas d'option de propriétés, seulement des options pour mettre en pause ou reprendre ce que j'essaye de faire par programmation. Merci –

Répondre

0

RESOLU!

Il s'avère que j'avais juste besoin de démarrer Visual Studio en tant qu'administrateur et que ça a marché.