DB 11.2.0.4
We have the Oracle Messaging Gateway (OMG) setup and configured to interact with an upstream IBM MQSeries topic. The Advanced Queue into which the MQ messages are forwarded has a defined payload type of JMS MAP Message. Generally, this is all working just fine.
However, the management of, and the entries within, the MQSeries queue is handled by a separate group and, therefore, to us, is basically a black box. Every once in awhile, someone on the other end will stick a message onto the MQSeries side that is of an incompatible type to that of the mapped AQ. For example, they might enqueue a "Im a Test...Ignore Me!" text message. Oh, if only that were possible!
Instead of ignoring it, however; whenever the OMG tries to forward a message with an incompatible payload type, the gateway crashes and, as one would expect, in the log we get a message similar to the following:
- oracle.jms.AQjmsException: JMS-108: Messages of type TextMessage not allowed with Destinations containing payload of type SYS.AQ$_JMS_MAP_MESSAGE
Moreover, since the dequeue operation from MQ is not acknowledged until the enqueue operation into AQ has succeeded, the offending message can never be removed by the gateway. So; each time it starts, as soon as it encounters the offending message, it crashes again.
So far, the only fix we've ever found was to have someone from this other group (painstakingly!) track down the offending message and delete it.
My question is this: Is there any sort of "Defensive Coding" that could be employed on the Oracle side to get past these offending message, e.g. dequeue and discard? Any sort of Message Gateway parameter that we could set?
Thanks,
-Joe