Hi Devs, Any ideia on this one?
Regards, Norberto On 22 March 2018 at 13:45, Fernandes, Norberto <[email protected] > wrote: > Hi Devs, > > I have encountered an issue while processing rabbitMQ messages that > contain non-string headers. > The error that I found is has follow: > > TID: [-1] [] [2018-03-22 13:24:26,970] ERROR > {org.apache.axis2.transport.rabbitmq.ServiceTaskManager} > - Error, Connection closed, Exception occurred, service > XXXTest.XXXdl.1.0.0, Listner id - 388 {org.apache.axis2.transport. > rabbitmq.ServiceTaskManager} > > java.lang.ClassCastException: java.util.ArrayList cannot be cast to > com.rabbitmq.client.LongString > > at org.apache.axis2.transport.rabbitmq.utils.RabbitMQUtils. > getTransportHeaders(RabbitMQUtils.java:126) > > at org.apache.axis2.transport.rabbitmq.RabbitMQMessageReceiver. > processThroughAxisEngine(RabbitMQMessageReceiver.java:114) > > at org.apache.axis2.transport.rabbitmq.RabbitMQMessageReceiver.onMessage( > RabbitMQMessageReceiver.java:61) > > at org.apache.axis2.transport.rabbitmq.ServiceTaskManager$ > MessageListenerTask.startConsumer(ServiceTaskManager.java:608) > > at org.apache.axis2.transport.rabbitmq.ServiceTaskManager$ > MessageListenerTask.run(ServiceTaskManager.java:336) > > at org.apache.axis2.transport.base.threads.NativeWorkerPool$ > 1.run(NativeWorkerPool.java:172) > > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1149) > > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:624) > > at java.lang.Thread.run(Thread.java:748) > > This error is thrown when message contains non-string headers. > On my test, the headers are created by rabbitmq internally. This is a > rabbitmq MQ Dead-Letter handling process that creates it like that. So, I > cannot change the header to another type of information. > I am using WSO2 EI version 6.1.1 update 64. > > I believe the issue is on the handling of the method getTransportHeaders: > // any other transport properties / headers > Map<String, Object> headers = message.getHeaders(); > if (headers != null && !headers.isEmpty()) { > for (String headerName : headers.keySet()) { > String value = new String(((*LongString*)(headers. > get(headerName))).getBytes()); > map.put(headerName, value); > } > } > > The get assumes that all data will be String/LongString where in my > example it is an ArrayList. Sending an picture with the message content and > properties. > > Is there any know solution for this? How can this be solved? > > Many thanks in advance. > Norberto > > > > > >
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
