Nosso problema acabou sendo um problema de infraestrutura com servidores que não estão sendo autenticados corretamente. Nosso sysadmin finalmente resolveu reconfigurando o servidor que hospeda a fila.
Temos um problema contínuo com gravações de mensagens no MSMQ sendo muito lentas. Nossa fila está no Windows Server 2008 SP2. A fila é uma fila pública, endereçada em "servername \ nome da fila".
O código para enviar uma mensagem para a fila é
MessageQueue queue = new MessageQueue(Settings.Default.DefaultDestinationQueue);
queue.Formatter = new BinaryMessageFormatter();
queue.Send(message);
A mensagem que estamos tentando enviar é simplesmente "PublishMessage", da seguinte forma:
[Serializable]
public class PublishMessage {
public int EntryId {get; set; }
}
Estamos vendo as mensagens realmente chegarem à fila, mas o registro antes e depois mostra que geralmente leva mais de um minuto para cada mensagem.
No momento, não podemos ver nada de errado com nossa configuração de filas, mas não somos especialistas em filas - essa é a primeira adição a esse aplicativo. Alguém tem alguma ideia?
Edit: Nosso servidor está executando o SP 2 (não o SP1 que eu afirmei originalmente). Executar uma instância diretamente na máquina que hospeda a fila é rápido, qualquer outra não.
Observação: já fiz isso em link
Poderia, por favor, esclarecer que "registrar antes e depois mostra que geralmente leva mais de 1 minuto para cada mensagem". Você está registrando diretamente antes e depois do send ()? Ou há mais código entre as duas linhas de registro? O send () passa a mensagem para o gerenciador de filas local para entregar ao gerenciador de filas remotas. Qualquer registro apenas mostrará quando a mensagem entrou na fila de saída e não quando foi entregue.
Eu confiaria no monitor de desempenho para mostrar exatamente quando as mensagens saem de uma máquina e chegam na outra.
A maioria dos atrasos que vi são:
Dê uma olhada na fila de saída quando você envia uma mensagem para ver se a conexão está pendente.
O atraso é consistente?
Felicidades
John Breawkell
Tags performance msmq