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

Reply via email to