Skip to content

NPE if a received message is marked as "Redelivered" but no header is given #325

@chbriem

Description

@chbriem

Describe the bug

When receiving a message in "amqp mode" with a "Redelivered" flag set, and the given message does not contain any headers, then a NPE is thrown.

Reproduction steps

  1. Initialize the "RMQDestination" with Routing Key and Exchange Name ("amqp mode").
  2. Put a message in the queue, with "relivered" flag set and no headers.
  3. Try to receive the message

Expected behavior

No NPE is thrown, and the code runs into the branch where deliveryCount == null, which sets the JMSXDeliveryCount is set to "2".

Additional context

Stacktrace (shortened):

java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because the return value of "com.rabbitmq.client.AMQP$BasicProperties.getHeaders()" is null
	at com.rabbitmq.jms.client.RMQMessage.handleJmsRedeliveredAndDeliveryCount(RMQMessage.java:886) ~[rabbitmq-jms.jar:2.8.0]
	at com.rabbitmq.jms.client.RMQMessage.convertAmqpMessage(RMQMessage.java:866) ~[rabbitmq-jms.jar:2.8.0]
	at com.rabbitmq.jms.client.RMQMessage.convertMessage(RMQMessage.java:835) ~[rabbitmq-jms.jar:2.8.0]
	at com.rabbitmq.jms.client.RMQMessageConsumer.receive(RMQMessageConsumer.java:358) ~[rabbitmq-jms.jar:2.8.0]
	at com.rabbitmq.jms.client.RMQMessageConsumer.receive(RMQMessageConsumer.java:272) ~[rabbitmq-jms.jar:2.8.0]

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions