MSMQ: Отправка и получение сообщения???
От: valcom  
Дата: 17.09.02 13:00
Оценка:
Привет всем!!!
Возникла проблема в том что при получении сообщения из очереди сообщений MSMQ, сообщение пустое
из кода я думаю будет понятней (С#):

using System;
using System.Messaging;

namespace SenderLibrary
{
public class Maker
{
private string Maker_Name;
private string Maker_Info;

public Maker()
{
Maker_Name="";
Maker_Info="";
}

public void SetMakerName(string pMaker_Name)
{
Maker_Name=pMaker_Name;
}

public void SetMakerInfo(string pMaker_Info)
{
Maker_Info=pMaker_Info;
}
public string GetMakerName()
{
return Maker_Name;
}
public string GetMakerInfo()
{
return Maker_Info;
}

}



public class Sender
{
public string mqPath = ".\\MakerSend";
private MessageQueue mq;
public Sender()
{
mq = new MessageQueue(mqPath);
mq.Formatter = new XmlMessageFormatter(new Type[]{typeof (SenderLibrary.Maker)});
}

public void Send(ref Maker pMaker)
{
try
{

if(!MessageQueue.Exists(mqPath))
{
MessageQueue.Create(mqPath);
}
Message _message=new Message();
Type[] targetTypes = {typeof(SenderLibrary.Maker)};
_message.Formatter = new XmlMessageFormatter(targetTypes);
_message.Body=pMaker;
mq.Send(_message); //Посылаю сообщение все ОК!
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
}

public SenderLibrary.Maker Receive()
{

try
{
//Получаю сообщение и ПУСТО!!!
Message _message = mq.Receive();
Type[] targetTypes = {typeof(SenderLibrary.Maker)};
_message.Formatter = new XmlMessageFormatter(targetTypes);
SenderLibrary.Maker _maker = (SenderLibrary.Maker)_message.Body;
return _maker;
}
catch (MessageQueueException)
{
// Handle Message Queuing exceptions.
}

// Handle invalid serialization format.
catch (InvalidOperationException e)
{
Console.WriteLine(e.Message);
}
return new SenderLibrary.Maker();

}


}


}

//}


P.S. Системный монитор показывает что сообщения отправляются и забираются только вот не понятно то ли отправка не работает, то ли получаем неправильно, исключительных ситуаций не возникает...
Заранее благодарен за помощь!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.