[rabbitmq-discuss] Messaging and Serialization in RabbitMQ?

Simone Busoli simone.busoli at gmail.com
Tue Jul 5 23:16:42 BST 2011


It is, and BasicDeliverEventArgs.Body is of type byte[].

On Wed, Jul 6, 2011 at 00:14, Demiss Zike <habtdemis at gmail.com> wrote:

> Could, byte[] body = ea.Body; generate it? Because that is the only line
> the error seems to relate with. I believe ea is of  BasicDeliverEventArgs
> type?
>
>
>
> On Tue, Jul 5, 2011 at 5:07 PM, Simone Busoli <simone.busoli at gmail.com>wrote:
>
>> Putting back the list (please Reply All).
>>
>> the code you posted is unlikely generating that exception. It's
>> complaining about an invalid cast from BasicDeliverEventArgs to byte[], and
>> you don't have such a cast in your code.
>>
>> On Wed, Jul 6, 2011 at 00:00, Demiss Zike <habtdemis at gmail.com> wrote:
>>
>>> Sure, I've attached the screen shot of the error.
>>>
>>>
>>> On Tue, Jul 5, 2011 at 4:51 PM, Simone Busoli <simone.busoli at gmail.com>wrote:
>>>
>>>> Putting back the list.
>>>>
>>>> Any chance to have a proper stack trace of the exception?
>>>>
>>>> On Tue, Jul 5, 2011 at 23:46, Demiss Zike <habtdemis at gmail.com> wrote:
>>>>
>>>>> My bad, please ignore my last response. It compiles well but gives me
>>>>> the following run time error:
>>>>>
>>>>> Unhandled Exception: System.InvalidCastException: Unable to cast object
>>>>> of type 'RabbitMQ.Events.BasicDeliverEventArgs' to type 'System[]'.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Jul 5, 2011 at 4:35 PM, Demiss Zike <habtdemis at gmail.com>wrote:
>>>>>
>>>>>> It does and take in a byte[] and initializes a Measurement object.
>>>>>>
>>>>>>
>>>>>> On Tue, Jul 5, 2011 at 4:18 PM, Simone Busoli <
>>>>>> simone.busoli at gmail.com> wrote:
>>>>>>
>>>>>>> Doesn't m2 in your code below contain the deserialized message?
>>>>>>>
>>>>>>> On Tue, Jul 5, 2011 at 23:15, Demiss Zike <habtdemis at gmail.com>wrote:
>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> I'm using c#. I have a serializable class called Measurement and
>>>>>>>> want to send an object of it. I serialized an object of Measurement and
>>>>>>>> captured the serialized object as byte[] and published it. My question is
>>>>>>>> how can I capture the published message (so that I can deserialize and use
>>>>>>>> it)?
>>>>>>>>
>>>>>>>> I've included codes on both ends:
>>>>>>>>
>>>>>>>> public void publish(byte[] _serializedMsg)
>>>>>>>> {
>>>>>>>> // publisher code
>>>>>>>>      ConnectionFactory factory = new ConnectionFactory();
>>>>>>>>             factory.HostName = "localhost";
>>>>>>>>              using (IConnection connection =
>>>>>>>> factory.CreateConnection())
>>>>>>>>             using (IModel channel = connection.CreateModel()) {
>>>>>>>>             channel.ExchangeDeclare("logs", "fanout");
>>>>>>>>             channel.BasicPublish("logs", queue, null,
>>>>>>>> _serializedMsg);
>>>>>>>>             Console.WriteLine(" Message sent ");
>>>>>>>>         }
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> public void subscribe(string queue)
>>>>>>>> {
>>>>>>>>  // subscriber code
>>>>>>>> ConnectionFactory factory = new ConnectionFactory();
>>>>>>>>             factory.HostName = "localhost";
>>>>>>>>             using (IConnection connection =
>>>>>>>> factory.CreateConnection())
>>>>>>>>             using (IModel channel = connection.CreateModel()) {
>>>>>>>>             channel.ExchangeDeclare("logs", "fanout");
>>>>>>>>
>>>>>>>>     string queue1 = channel.QueueDeclare();
>>>>>>>>             channel.QueueBind(queue1, "logs", "");
>>>>>>>>             QueueingBasicConsumer consumer = new
>>>>>>>> QueueingBasicConsumer(channel);
>>>>>>>>             channel.BasicConsume(queue1, true, consumer);
>>>>>>>>
>>>>>>>>             Console.WriteLine(" Waiting for messages. To exit press
>>>>>>>> CTRL+C");
>>>>>>>>             while(true) {
>>>>>>>>                 BasicDeliverEventArgs ea =
>>>>>>>>                     (BasicDeliverEventArgs)consumer.Queue.Dequeue();
>>>>>>>>                  byte[] body = ea.Body;
>>>>>>>>  Measurement m2 = new Measurement(20, 23323, 3.3);
>>>>>>>>  m2 = BinarySerialization.BinaryDeSerialize( body );
>>>>>>>>
>>>>>>>>                 Console.WriteLine(" Message received: ");
>>>>>>>>  Console.WriteLine("\nMeasurement ID: {0}", m2.id);
>>>>>>>> Console.WriteLine("Measurement Time: {0}", m2.time);
>>>>>>>>  Console.WriteLine("Measurement Value: {0}", m2.value);
>>>>>>>>             }
>>>>>>>>         }
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks!
>>>>>>>> Demi
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> rabbitmq-discuss mailing list
>>>>>>>> rabbitmq-discuss at lists.rabbitmq.com
>>>>>>>> https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20110706/7d56a5d7/attachment.htm>


More information about the rabbitmq-discuss mailing list