UnsatisfiedLinkError при отправке сжатого (мгновенного) сообщения в kafka

В своем веб-приложении на Java я отправляю сообщения на адрес kafka.

Я хотел бы сжать свои сообщения перед их отправкой, поэтому я устанавливаю в свойствах производителя:

props.put ("сжатие.кодек", "2");

Насколько я понимаю, «2» означает мгновенно, но при отправке сообщения я получаю:

java.lang.UnsatisfiedLinkError: org.xerial.snappy.SnappyNative.maxCompressedLength(I)I
        at org.xerial.snappy.SnappyNative.maxCompressedLength(Native Method)
        at org.xerial.snappy.Snappy.maxCompressedLength(Snappy.java:316)
        at org.xerial.snappy.SnappyOutputStream.<init>(SnappyOutputStream.java:79)
        at org.xerial.snappy.SnappyOutputStream.<init>(SnappyOutputStream.java:66)
        at kafka.message.SnappyCompression.<init>(CompressionUtils.scala:61)
        at kafka.message.CompressionFactory$.apply(CompressionUtils.scala:82)
        at kafka.message.CompressionUtils$.compress(CompressionUtils.scala:109)
        at kafka.message.MessageSet$.createByteBuffer(MessageSet.scala:71)
        at kafka.message.ByteBufferMessageSet.<init>(ByteBufferMessageSet.scala:44)
        at kafka.producer.async.DefaultEventHandler$$anonfun$3.apply(DefaultEventHandler.scala:94)
        at kafka.producer.async.DefaultEventHandler$$anonfun$3.apply(DefaultEventHandler.scala:82)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
        at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:95)
        at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:95)
        at scala.collection.Iterator$class.foreach(Iterator.scala:772)
        at scala.collection.mutable.HashTable$$anon$1.foreach(HashTable.scala:157)
        at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:190)
        at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:45)
        at scala.collection.mutable.HashMap.foreach(HashMap.scala:95)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
        at scala.collection.mutable.HashMap.map(HashMap.scala:45)
        at kafka.producer.async.DefaultEventHandler.serialize(DefaultEventHandler.scala:82)
        at kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:44)
        at kafka.producer.async.ProducerSendThread.tryToHandle(ProducerSendThread.scala:116)
        at kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(ProducerSendThread.scala:95)
        at kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(ProducerSendThread.scala:71)
        at scala.collection.immutable.Stream.foreach(Stream.scala:526)
        at kafka.producer.async.ProducerSendThread.processEvents(ProducerSendThread.scala:70)
        at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:41)

Чтобы решить эту проблему, я попытался добавить мгновенную зависимость к моему помпу:

    <dependency>
        <groupId>org.xerial.snappy</groupId>
        <artifactId>snappy-java</artifactId>
        <version>${snappy-version}</version>
        <scope>provided</scope>
    </dependency>

и добавьте банку на мой причальный сервер в / lib / ext, но все равно получаю эту ошибку.

Если я установлю «0» вместо «2» в свойстве «compress.codec», я не получу исключения, как ожидалось.

что мне делать, чтобы использовать мгновенное сжатие?

Это моя оперативная версия (стоит ли использовать другую?): 1.1.0.1

Я развертываю свое приложение на причале 8.1.9, которое работает на Ubuntu 12.10.


person forhas    schedule 27.01.2014    source источник
comment
Ошибка возникает из-за того, что Snappy не может загрузить собственную библиотеку. Какую ОС и версию Snappy вы используете?   -  person Wildfire    schedule 28.01.2014
comment
@Wildfire Это моя оперативная версия (я должен использовать другую?): ‹Snappy-version› 1.1.0.1 ‹/snappy-version› Я развертываю свое приложение на причале 8.1.9, которое работает на Ubuntu 12.10.   -  person forhas    schedule 28.01.2014


Ответы (1)


   <dependency>
        <groupId>org.xerial.snappy</groupId>
        <artifactId>snappy-java</artifactId>
        <version>1.1.1.3</version>
    </dependency>

У меня была такая же проблема, и приведенный выше код решает мою проблему. В банке есть собственные библиотеки для всех ОС. Ниже представлена ​​моя среда разработки:

JDK version:        1.7.0_76
Kafka version:      2.10-0.8.2.1
Zookeeper version:  3.4.6
person jinshui    schedule 12.05.2015