# Error sending to RabbitMQ with priority from event - cannot convert instance of class org.jruby.specialized.RubyArrayOneObject to class java.lang.Integer

**URL:** <https://discuss.elastic.co/t/error-sending-to-rabbitmq-with-priority-from-event-cannot-convert-instance-of-class-org-jruby-specialized-rubyarrayoneobject-to-class-java-lang-integer/199965>\
**Category:** Logstash\
**Created:** [September 18, 2019, 9:55am UTC](https://discuss.elastic.co/t/error-sending-to-rabbitmq-with-priority-from-event-cannot-convert-instance-of-class-org-jruby-specialized-rubyarrayoneobject-to-class-java-lang-integer/199965 "2019-09-18T09:55:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Stuart\_Moore](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stuart_moore/32/43853_2.png) [@Stuart\_Moore](https://discuss.elastic.co/u/Stuart_Moore)\
**Post date:** [September 18, 2019, 9:55am UTC](https://discuss.elastic.co/t/error-sending-to-rabbitmq-with-priority-from-event-cannot-convert-instance-of-class-org-jruby-specialized-rubyarrayoneobject-to-class-java-lang-integer/199965/1 "2019-09-18T09:55:11Z")

</div>

I am trying to send a logstash event to RabbitMq with a priority from the event, and getting an error. The same code works correctly when I don't send priority.

The code that fails:

```
    rabbitmq {
        arguments => {
            "x-ha-policy" => "all"
            "x-max-priority" => 20
        }
        durable => true
        key => "key"
        exchange => "exchange"
        exchange_type => "direct"
        host => "rabbitmq"
        message_properties => {"priority" => [priority]}
        password => "secret"
        user => "user"
    }

```

If I comment out the message\_properties line, everything works.

[priority] is an integer - I have previously run

```
 mutate {
    convert => { "priority" => "integer" }
}

```

The error I get is:

```
org.jruby.exceptions.TypeError: (TypeError) cannot convert instance of class org.jruby.specialized.RubyArrayOneObject to class java.lang.Integer
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.metadata.build_properties_from(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/metadata.rb:103) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.channel.basic_publish(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/channel.rb:607) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.channel.converting_rjc_exceptions_to_ruby(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/channel.rb:978) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.channel.basic_publish(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/channel.rb:606) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.exchange.publish(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/exchange.rb:77) ~[?:?]
at RUBY.publish(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-rabbitmq-5.1.1-java/lib/logstash/outputs/rabbitmq.rb:66) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.logstash_minus_output_minus_rabbitmq_minus_5_dot_1_dot_1_minus_java.lib.logstash.outputs.rabbitmq.multi_receive_encoded(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-rabbitmq-5.1.1-java/lib/logstash/outputs/rabbitmq.rb:60) ~[?:?]
at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1792) ~[jruby-complete-9.2.7.0.jar:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.logstash_minus_output_minus_rabbitmq_minus_5_dot_1_dot_1_minus_java.lib.logstash.outputs.rabbitmq.multi_receive_encoded(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-rabbitmq-5.1.1-java/lib/logstash/outputs/rabbitmq.rb:59) ~[?:?]
at usr.share.logstash.logstash_minus_core.lib.logstash.outputs.base.multi_receive(/usr/share/logstash/logstash-core/lib/logstash/outputs/base.rb:87) ~[?:?]
at org.logstash.config.ir.compiler.OutputStrategyExt$AbstractOutputStrategyExt.multi_receive(org/logstash/config/ir/compiler/OutputStrategyExt.java:118) ~[logstash-core.jar:?]
at org.logstash.config.ir.compiler.AbstractOutputDelegatorExt.multi_receive(org/logstash/config/ir/compiler/AbstractOutputDelegatorExt.java:101) ~[logstash-core.jar:?]
at usr.share.logstash.logstash_minus_core.lib.logstash.java_pipeline.start_workers(/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:239) ~[?:?]

```

Looking at the appropriate line in [march\_hare metadata.rb (v3.1.1)](https://github.com/ruby-amqp/march_hare/blob/v3.1.1/lib/march_hare/metadata.rb#L103) it does look like it's priority related

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [September 18, 2019, 12:51pm UTC](https://discuss.elastic.co/t/error-sending-to-rabbitmq-with-priority-from-event-cannot-convert-instance-of-class-org-jruby-specialized-rubyarrayoneobject-to-class-java-lang-integer/199965/2 "2019-09-18T12:51:50Z")

</div>

> [@Stuart\_Moore](#):
>
> message\_properties =\> {"priority" =\> [priority]}

Does it work any better if you use

```
message_properties => {"priority" => "%{[priority]}" }

```

---

<div class="post-metadata">

**Author:** ![Stuart\_Moore](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stuart_moore/32/43853_2.png) [@Stuart\_Moore](https://discuss.elastic.co/u/Stuart_Moore)\
**Post date:** [September 18, 2019, 4:10pm UTC](https://discuss.elastic.co/t/error-sending-to-rabbitmq-with-priority-from-event-cannot-convert-instance-of-class-org-jruby-specialized-rubyarrayoneobject-to-class-java-lang-integer/199965/3 "2019-09-18T16:10:56Z")

</div>

> [@Badger](#):
>
> Does it work any better if you use
> 
> ```auto
> message_properties => {"priority" => "%{[priority]}" }
> 
> ```

No - then I get a different error - this time it's complaining that it is trying to convert a `RubyString` to an integer, instead of a `RubyArrayOneObject`

```
    org.jruby.exceptions.TypeError: (TypeError) cannot convert instance of class org.jruby.RubyString to class java.lang.Integer
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.metadata.build_properties_from(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/metadata.rb:103) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.channel.basic_publish(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/channel.rb:607) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.channel.converting_rjc_exceptions_to_ruby(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/channel.rb:978) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.channel.basic_publish(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/channel.rb:606) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.march_hare_minus_3_dot_1_dot_1_minus_java.lib.march_hare.exchange.publish(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/march_hare-3.1.1-java/lib/march_hare/exchange.rb:77) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.logstash_minus_output_minus_rabbitmq_minus_5_dot_1_dot_1_minus_java.lib.logstash.outputs.rabbitmq.publish(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-rabbitmq-5.1.1-java/lib/logstash/outputs/rabbitmq.rb:66) ~[?:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.logstash_minus_output_minus_rabbitmq_minus_5_dot_1_dot_1_minus_java.lib.logstash.outputs.rabbitmq.multi_receive_encoded(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-rabbitmq-5.1.1-java/lib/logstash/outputs/rabbitmq.rb:60) ~[?:?]
at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1792) ~[jruby-complete-9.2.7.0.jar:?]
at usr.share.logstash.vendor.bundle.jruby.$2_dot_5_dot_0.gems.logstash_minus_output_minus_rabbitmq_minus_5_dot_1_dot_1_minus_java.lib.logstash.outputs.rabbitmq.multi_receive_encoded(/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-output-rabbitmq-5.1.1-java/lib/logstash/outputs/rabbitmq.rb:59) ~[?:?]
at usr.share.logstash.logstash_minus_core.lib.logstash.outputs.base.multi_receive(/usr/share/logstash/logstash-core/lib/logstash/outputs/base.rb:87) ~[?:?]
at org.logstash.config.ir.compiler.OutputStrategyExt$AbstractOutputStrategyExt.multi_receive(org/logstash/config/ir/compiler/OutputStrategyExt.java:118) ~[logstash-core.jar:?]
at org.logstash.config.ir.compiler.AbstractOutputDelegatorExt.multi_receive(org/logstash/config/ir/compiler/AbstractOutputDelegatorExt.java:101) ~[logstash-core.jar:?]
at usr.share.logstash.logstash_minus_core.lib.logstash.java_pipeline.start_workers(/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:239) ~[?:?]

```

Is this the correct place to raise this as a bug, or should I be posting this elsewhere?

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [September 18, 2019, 4:21pm UTC](https://discuss.elastic.co/t/error-sending-to-rabbitmq-with-priority-from-event-cannot-convert-instance-of-class-org-jruby-specialized-rubyarrayoneobject-to-class-java-lang-integer/199965/4 "2019-09-18T16:21:44Z")

</div>

I think you are out of luck. The rabbitmq code needs priority to be an integer, but a sprintf reference will always be a string.

---

<div class="post-metadata">

**Author:** ![Stuart\_Moore](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stuart_moore/32/43853_2.png) [@Stuart\_Moore](https://discuss.elastic.co/u/Stuart_Moore)\
**Post date:** [September 19, 2019, 10:09am UTC](https://discuss.elastic.co/t/error-sending-to-rabbitmq-with-priority-from-event-cannot-convert-instance-of-class-org-jruby-specialized-rubyarrayoneobject-to-class-java-lang-integer/199965/5 "2019-09-19T10:09:02Z")

</div>

That's... frustrating. I will see if I can make the necessary modification to the plugin.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [October 17, 2019, 10:09am UTC](https://discuss.elastic.co/t/error-sending-to-rabbitmq-with-priority-from-event-cannot-convert-instance-of-class-org-jruby-specialized-rubyarrayoneobject-to-class-java-lang-integer/199965/6 "2019-10-17T10:09:05Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
