2013-12-05 7 views
0

я получаю странный исключение я видел до сих пор в Java в RabbitMQ клиента и погуглить вокруг не дают никаких полезных результатов, поэтому я несу это так :)Короткая строка слишком длинное исключение

Любой мог указать мне к возможному объяснению этого или исправить?

java.lang.IllegalArgumentException: Short string too long; utf-8 encoded length = 830, max = 255. 
    at com.rabbitmq.client.impl.ValueWriter.writeShortstr(ValueWriter.java:51) ~[amqp-client-2.8.4.jar:na] 
    at com.rabbitmq.client.impl.MethodArgumentWriter.writeShortstr(MethodArgumentWriter.java:75) ~[amqp-client-2.8.4.jar:na] 
    at com.rabbitmq.client.impl.AMQImpl$Queue$Bind.writeArgumentsTo(AMQImpl.java:1549) ~[amqp-client-2.8.4.jar:na] 
    at com.rabbitmq.client.impl.Method.toFrame(Method.java:83) ~[amqp-client-2.8.4.jar:na] 
+4

Где код, ответственный за это исключение? Эта проблема возникает из-за превышения длины данных. –

+0

Обновите свой протокол и используйте 'LongString' для этой строки –

+2

Предположительно, строка должна содержать не более 255 символов, а на самом деле это 830.« Короткая строка »говорит, что она * ожидает * для записи - это не говорит о том, что фактическая данные * есть * короткий. –

ответ

2
public final void writeShortstr(String str) 
    throws IOException 
{ 
    byte [] bytes = str.getBytes("utf-8"); 
    int length = bytes.length; 
    if (length > 255) { 
     throw new IllegalArgumentException(
      "Short string too long; utf-8 encoded length = " + length + 
      ", max = 255."); 
    } 
    out.writeByte(bytes.length); 
    out.write(bytes); 
} 

Ваша строка слишком длинная.

+0

Я столкнулся с той же проблемой, ключ маршрутизации, который я использовал, был слишком длинным, потому что я попытался опубликовать полезную нагрузку в ключе маршрутизации :) – Mektoub

Смежные вопросы