IBM MQ reason code

MQRC 2090: Wait interval not valid

MQRC 2090 means MQGMO.WaitInterval is invalid. Check milliseconds, signed values and configuration parsing before retrying the get call.

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_UNLIMITED constant. Other negative values are invalid.

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

  1. Log the actual signed WaitInterval immediately before the call. Compare it with the configured value and all intermediate conversions.
  2. Inspect the MQGMO options as well as the interval. Confirm whether waiting is intended for this operation.
  3. Test boundary conditions: zero, a short interval, an expired deadline and the documented unlimited constant.
  4. 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.

Report a correction to WND Software.

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.