You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by pwalter <pa...@nasa.gov> on 2013/02/12 14:10:41 UTC

Byte Arrays In IMapMessage

Trying to add a byte[] as an item in an IMapMessage...

IMapMessage message = producer.getSession().CreateMapMessage();

string sval = "STRANGE BYTES FROM WORD DOC:
üøôðôìèìäôìàìÜìÜìÜìÜàìàØàìÔÐÔÐÌÈÌÐ";
byte[] bytes = Encoding.UTF8.GetBytes(sval);
message.Properties.SetBytes("TEST-ByteArray", bytes);

It fails on the SetBytes() method.  IS THERE A BETTER WAY TO SET BYTES IN A
MAP MESSAGE??

Thanks


Errors and Failures:
1) Test Error :
ProducerSendConsumerReceive.TestFixture1.TestConsumerSupport_set MessageBody
   Apache.NMS.MessageFormatException : Byte Arrays not allowed in this
PrimitiveMap
  ----> System.NotSupportedException : Byte Arrays not allowed in this
PrimitiveMap
   at Apache.NMS.Util.PrimitiveMapInterceptor.SetObjectProperty(String name,
Object value) in
c:\dev\NMS\src\main\csharp\Util\PrimitiveMapInterceptor.cs:line 95

   at Apache.NMS.Util.MessagePropertyIntercepter.SetObjectProperty(String
name, Object value) in
c:\dev\NMS\src\main\csharp\Util\MessagePropertyIntercepter.cs:line 93
   at Apache.NMS.Util.PrimitiveMapInterceptor.SetBytes(String key, Byte[]
value, Int32 offset, Int32 length) in
c:\dev\NMS\src\main\csharp\Util\PrimitiveMapInterceptor.cs:line 411
   at Apache.NMS.Util.PrimitiveMapInterceptor.SetBytes(String key, Byte[]
value)
 in c:\dev\NMS\src\main\csharp\Util\PrimitiveMapInterceptor.cs:line 404
   at ProducerSendConsumerReceive.TestFixture1.addMessageData(IMessage
message)
in
C:\work\dev\trunk\common\Project\FreeFlyerExtensions\TrajService\Test\FDSMessagingConsumerSupportTest\ConsumerSupportTest\TestFixture.cs:line
105
   at
ProducerSendConsumerReceive.TestFixture1.TestConsumerSupport_setMessageBody()
in C:\work\dev\trunk\common\Project\FreeFlyerExtensions\TrajService\Test\FDS
Messaging\ConsumerSupportTest\ConsumerSupportTest\TestFixture.cs:line 29
--NotSupportedException
   at Apache.NMS.Util.PrimitiveMapInterceptor.SetObjectProperty(String name,
Object value) in
c:\dev\NMS\src\main\csharp\Util\PrimitiveMapInterceptor.cs:line 88









--
View this message in context: http://activemq.2283324.n4.nabble.com/Byte-Arrays-In-IMapMessage-tp4663255.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Re:Byte Arrays In IMapMessage

Posted by SuoNayi <su...@163.com>.
Hi,for properties of a message, the type of their value can only be boolean, byte, 
short, int, long, float, double, or String.You can not assign its value with byte array type.
You can call the setBytes method of the message like this:
message.setBytes("TEST-ByteArray", bytes);
The other simple approach to transfer byte array is to use BytesMessage instead of MapMessage.

At 2013-02-12 21:10:41,pwalter <pa...@nasa.gov> wrote:
>Trying to add a byte[] as an item in an IMapMessage...
>
>IMapMessage message = producer.getSession().CreateMapMessage();
>
>string sval = "STRANGE BYTES FROM WORD DOC:
>üøôðôìèìäôìàìÜìÜìÜìÜàìàØàìÔÐÔÐÌÈÌÐ";
>byte[] bytes = Encoding.UTF8.GetBytes(sval);
>message.Properties.SetBytes("TEST-ByteArray", bytes);
>
>It fails on the SetBytes() method.  IS THERE A BETTER WAY TO SET BYTES IN A
>MAP MESSAGE??
>
>Thanks
>
>
>Errors and Failures:
>1) Test Error :
>ProducerSendConsumerReceive.TestFixture1.TestConsumerSupport_set MessageBody
>   Apache.NMS.MessageFormatException : Byte Arrays not allowed in this
>PrimitiveMap
>  ----> System.NotSupportedException : Byte Arrays not allowed in this
>PrimitiveMap
>   at Apache.NMS.Util.PrimitiveMapInterceptor.SetObjectProperty(String name,
>Object value) in
>c:\dev\NMS\src\main\csharp\Util\PrimitiveMapInterceptor.cs:line 95
>
>   at Apache.NMS.Util.MessagePropertyIntercepter.SetObjectProperty(String
>name, Object value) in
>c:\dev\NMS\src\main\csharp\Util\MessagePropertyIntercepter.cs:line 93
>   at Apache.NMS.Util.PrimitiveMapInterceptor.SetBytes(String key, Byte[]
>value, Int32 offset, Int32 length) in
>c:\dev\NMS\src\main\csharp\Util\PrimitiveMapInterceptor.cs:line 411
>   at Apache.NMS.Util.PrimitiveMapInterceptor.SetBytes(String key, Byte[]
>value)
> in c:\dev\NMS\src\main\csharp\Util\PrimitiveMapInterceptor.cs:line 404
>   at ProducerSendConsumerReceive.TestFixture1.addMessageData(IMessage
>message)
>in
>C:\work\dev\trunk\common\Project\FreeFlyerExtensions\TrajService\Test\FDSMessagingConsumerSupportTest\ConsumerSupportTest\TestFixture.cs:line
>105
>   at
>ProducerSendConsumerReceive.TestFixture1.TestConsumerSupport_setMessageBody()
>in C:\work\dev\trunk\common\Project\FreeFlyerExtensions\TrajService\Test\FDS
>Messaging\ConsumerSupportTest\ConsumerSupportTest\TestFixture.cs:line 29
>--NotSupportedException
>   at Apache.NMS.Util.PrimitiveMapInterceptor.SetObjectProperty(String name,
>Object value) in
>c:\dev\NMS\src\main\csharp\Util\PrimitiveMapInterceptor.cs:line 88
>
>
>
>
>
>
>
>
>
>--
>View this message in context: http://activemq.2283324.n4.nabble.com/Byte-Arrays-In-IMapMessage-tp4663255.html
>Sent from the ActiveMQ - User mailing list archive at Nabble.com.