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. Системный монитор показывает что сообщения отправляются и забираются только вот не понятно то ли отправка не работает, то ли получаем неправильно, исключительных ситуаций не возникает...
Заранее благодарен за помощь!!!
Re: MSMQ: Отправка и получение сообщения???
От: valcom  
Дата: 19.09.02 08:23
Оценка:
Отвечаю на свой же вопрос, дело в том что по MSMQ, нельзя передавать обьекты(хотя я надеялся что произойдет бинарное копирование, потому что обьект слишком простой), но все же не зависимо от того что обьект простой или не простой, его необходимо сохранять в строку, то есть необходимо поддерживать так называемую сериализацию, поэтому необходимо добавлять две функции перевод обьекта в строку и наоборот, и все будет ОК.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.