我有一个要在队列中发送的对象,它是一个对象。我还有另一个读取该队列的队列。我可以以字符串的形式从该队列中读取数据,但我想将其反序列化为我发送的对象。
我已经尝试过几种格式化方法,并将接收到的消息字符串转换为对象,但它不正确。
Console.WriteLine("Listening for messages");
_model.BasicQos(0, 1, false);
Subscription _subscription = new Subscription(_model, QueueName, false);
while (true)
{
Thread.Sleep(2000);
//Get next message
var deliveryArgs = _subscription.Next();
//Deserialize message
var message = System.Text.Encoding.Default.GetString(deliveryArgs.Body);
var t = (MyMessageObject)_subscription.Queue.Dequeue().Body.Deserialize(typeof(MyMessageObject));
var t2 = (MyMessageObject)deliveryArgs.Body.Deserialize(typeof(MyMessageObject));
Console.WriteLine("<=== Received {0} {1}", t.myId, t.myAmount);
//Acknowledge message is processed
_subscription.Ack(deliveryArgs);
我找到了解决方案:var message =(object)deliveryArgs.Body.DeSerialize(typeof(object));
只需要强制转换为您的对象。