MQRC 2090: Wait interval not valid
MQRC 2090 means MQGMO.
Other names for this code
Also written as RC2090, reason code 2090, MQ error 2090, MQRC_WAIT_INTERVAL_ERROR, 082A, 0x082A.
What it means
MQGET rejected the wait interval in its get-message options. IBM specifies a nonnegative value or the defined MQWI_
Separate the interval field from the wait option and from connection or network timeouts. They describe different stages of a consumer's behavior.
A troubleshooting example
A request has a 30-second processing deadline. After a slow initialization step, the code calculates a remaining wait of minus 200 milliseconds and passes it to MQGET. The result is 2090 rather than an immediate empty-queue result. Test the expired-deadline branch directly. Decide whether it should skip the get or use a zero interval, then keep that decision separate from ordinary retry logic. Increasing the original timeout alone would merely make the same edge case less frequent.
Common causes
- A timeout calculation becomes negative after subtracting elapsed time from a deadline.
- A seconds-to-milliseconds conversion overflows the field or uses the wrong units.
- Configuration supplies an arbitrary negative sentinel instead of the MQ constant.
How to find the problem
- Log the actual signed WaitInterval immediately before the call. Compare it with the configured value and all intermediate conversions.
- Inspect the MQGMO options as well as the interval. Confirm whether waiting is intended for this operation.
- Test boundary conditions: zero, a short interval, an expired deadline and the documented unlimited constant.
- Check how the consumer exits during shutdown. An unlimited wait can affect responsiveness even when the field value is valid.
How to fix it
- Validate configuration and computed timeouts before calling MQ. Clamp an expired remaining-time calculation to the intended no-wait behavior rather than passing a negative duration.
- Use consistent units and a suitable integer range. Use MQWI_
UNLIMITED explicitly when indefinite waiting is the approved behavior. - Choose bounded waits when the worker needs periodic cancellation or health checks. Test shutdown and no-message behavior alongside the ordinary receive path.
What it looks like
Illustrative diagnostic notes; not an IBM message template. Deadline calculation: remaining milliseconds = -200 MQGMO.WaitInterval = -200 MQGET Reason=2090 Use a valid nonnegative interval or MQWI_UNLIMITED.
IBM documentation
IBM MQ 9.4: 2090 MQRC_WAIT_INTERVAL_ERROR. Use the documentation for your installed release.
Related codes
Questions
Is WaitInterval measured in seconds?
The MQGMO field uses milliseconds. Check conversions at the application boundary.
Can I use any negative value for unlimited waiting?
No. Use the documented MQWI_UNLIMITED constant. Other negative durations are invalid.