I'm writing messages to a Message Queue in C# as follows:
queue.Send(new Message("message"));
I'm trying to read the messages as follows:
Messages messages = queue.GetAllMessages();
foreach(Message m in messages)
{
String message = m.Body;
//do something with string
}
However I'm getting an error message which says: "Cannot find a formatter capable of reading this message."
What am I doing wrong?
I solved the problem by adding a formatter to each message. Adding a formatter to the queue didn't work.
Messages messages = queue.GetAllMessages();
foreach(Message m in messages)
{
m.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
String message = m.Body;
//do something with string
}
Or you can use
message.Formatter =
new System.Messaging.XmlMessageFormatter(new Type[1] { typeof(string) });
you could try reading the bodystream of the message instead of the body, like this:
StreamReader sr = new StreamReader(m.BodyStream);
string messageBody = "";
while (sr.Peek() >= 0)
{
messageBody += sr.ReadLine();
}
Message recoverableMessage = new Message();
recoverableMessage.Body = "Sample Recoverable Message";
recoverableMessage.Formatter = new XmlMessageFormatter(new String[] {"System.String,mscorlib" });
MessageQueue myQueue = new MessageQueue(@".\private$\teste");
Queue must be set Formatter too.
myQueue.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With