flowable/flowable-engine · error · FlowableException
Could not get header information
Error message
Could not get header information
What it means
JmsMessageInboundEvent.retrieveHeaders() iterates JMS message properties to build the event's header map. Any JMSException during property access is wrapped in a FlowableException with this message. It means the underlying JMS provider failed while reading the message's properties.
Solutions
- Inspect the wrapped JMSException cause for the provider-level failure (connection, session, or message validity).
- Reconnect/reacquire the message: reprocess the event from the source queue instead of reading from a stale message.
- Ensure the message is processed within a live JMS session (do not cache messages across sessions).
- Catch FlowableException around getHeaders() and route the event to an error/dead-letter path for retry.
Example fix
// before
Map<String, Object> headers = event.getHeaders();
// after
try {
Map<String, Object> headers = event.getHeaders();
} catch (FlowableException e) {
deadLetterChannel.send(event, e); // handle JMS failure, retry later
} Defensive patterns
Strategy: try-catch
Try / catch
try {
Map<String, Object> headers = event.getHeaders();
} catch (FlowableException e) {
// JMSException wrapped; re-read from a fresh consumer or dead-letter the event
errorHandler.handle(event, e.getCause());
} Prevention
- Process events inside live JMS sessions only.
- Monitor JMS connection health and reconnect promptly.
- Route unreadable events to a dead-letter path for retry.
When it happens
Trigger: Calling getHeaders() on a JmsMessageInboundEvent whose underlying javax.jms.Message throws JMSException in getObjectProperty — e.g. the message was consumed on a closed connection/session or the broker connection dropped mid-read.
Common situations: Broker connection lost before property retrieval; message read after session/transaction rollback; transient network issues with the JMS provider.
Related errors
- Could not get body information
- A channel key detection value is required for inbound…
- A channel key detection value is required for the channel…
- A resource name is mandatory
- An event definition key is mandatory
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/45c6ce6fc68e5294.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-event-registry-spring/src/main/java/org/flowable/eventregistry/spring/jms/JmsMessageInboundEvent.java:69
headers = retrieveHeaders();
}
return headers;
}
@SuppressWarnings("unchecked")
protected Map<String, Object> retrieveHeaders() {
try {
Map<String, Object> headers = new HashMap<>();
Enumeration<String> headerNames = message.getPropertyNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
headers.put(headerName, message.getObjectProperty(headerName));
}
return headers;
} catch (JMSException e) {
throw new FlowableException("Could not get header information", e);
}
}
protected String convertEventToString() {
if (message instanceof TextMessage) {
try {
return ((TextMessage) message).getText();
} catch (JMSException e) {
throw new FlowableException("Could not get body information");
}
} else {
return message.toString();
}
}
@Override
public String toString() {
return "JmsMessageInboundEvent{" +View on GitHub (pinned to d6d39ce1c6)