system.messaging cola congelada mientras message.receive
Frecuentes
Visto 502 veces
0
Esta es la primera vez que utilizo esta biblioteca de mensajería y utilicé un código de ejemplo para implementarla. La primera vez que lo ejecuté funcionó perfectamente, pero detuve abruptamente el código porque mi método de análisis parecía incorrecto. Entonces, cuando lo reinicié, el código se congela en la siguiente línea:
message = q.Receive()
¿Es posible que la cola de mensajes se haya dañado o algo así? Revisé el administrador del servidor y parece que la cola todavía está allí y la cantidad de mensajes = 1 como antes. Aquí está el resto de mi código:
If MessageQueue.Exists(".\private$\TwitterQueue") Then
q = New MessageQueue(".\private$\TwitterQueue")
Else
'GS - If there is no queue then we're done here
Console.WriteLine("Queue has not been created!")
Return
End If
Try
While True
'GS - Try and pull back the next message
Dim message As Message
Try
message = q.Receive()
message.Formatter = New XmlMessageFormatter(New [String]() {"System.String"})
ProcessMessage(message)
Catch
end try
End While
EDIT:
cómo se crea la cola:
Dim q As MessageQueue = If((MessageQueue.Exists(".\private$\TwitterQueue")), New MessageQueue(".\private$\TwitterQueue"), MessageQueue.Create(".\private$\TwitterQueue"))
y como se usa:
Dim msg As New Message(responseData)
q.Send(msg)
y solo comprobé si era transaccional;
If q.Transactional = True Then
Thread.Sleep(2000)
End If
y no lo es
1 Respuestas
0
Si intenta Crear cola desde detrás del código, puede intentar establecer los permisos
If MessageQueue.Exists(".\private$\TwitterQueue") Then
q = New MessageQueue(".\private$\TwitterQueue")
q.SetPermissions("Everyone", MessageQueueAccessRights.FullControl, AccessControlEntryType.Allow)
Else
'GS - If there is no queue then we're done here
Console.WriteLine("Queue has not been created!")
Return
End If
Si aún no puede recibir la Cola, recomiendo crear la Cola manualmente.
respondido 22 mar '15, 23:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas vb.net message-queue system.messaging or haz tu propia pregunta.
¿Podría ser que su MessageQueue se haya creado como una MessageQueue transaccional? También podrías intentar usar Cola de mensajes. Recibir (intervalo de tiempo) para establecer un tiempo de espera y debe intentar Cola de mensajes.Peek(). También verifique la configuración de seguridad en su cola. - Filburt
Establecí el tiempo de espera en 30 y 60 segundos y se agotó. No estoy seguro de la cola de mensajes transaccionales, pero edité mi publicación para mostrar cómo se creó la cola. - vbNewbie
no importa, acabo de actualizar y vi que se eliminó el mensaje. ¿Esto se hace automáticamente? ¿Es posible restaurarlo de alguna manera? - vbNewbie
Si si
Receive
el mensaje se elimina de la cola y no se puede restaurar. - Filburt