选择消息内容
可以根据消息有效内容的选择 (也称为内容过滤) 进行预订,但 IBM® MQ不能直接执行将哪些消息传递到此类预订的决策; 而是需要扩展消息选择提供程序 (例如 IBM Integration Bus) 来处理消息。
当应用程序发布主题字符串时 (其中一个或多个订户在消息内容上选择了选择字符串) , IBM MQ 将请求扩展消息选择提供程序解析发布内容,并通知 IBM MQ 该发布内容是否与每个订户使用内容过滤器指定的选择标准相匹配。
如果扩展消息选择提供程序确定发布内容与订户的选择字符串匹配,那么消息将继续传送给订户。
如果扩展消息选择提供程序确定发布内容不匹配,那么不会将消息传送给订户。 这可能会导致 MQPUT 或 MQPUT1 调用失败,同时带有原因码 MQRC_PUBLICATION_FAILURE。 如果扩展消息选择提供程序无法解析发布内容,那么将返回原因码 MQRC_CONTENT_ERROR,并且 MQPUT 或 MQPUT1 调用失败。
如果扩展消息选择提供程序不可用或者无法确定订户是否应该接收发布内容,那么将返回原因码 MQRC_SELECTION_NOT_AVAILABLE,并且 MQPUT 或 MQPUT1 调用失败。
在创建带有内容过滤器的预订时,如果扩展消息选择提供程序不可用,MQSUB 调用将失败并带有原因码 MQRC_SELECTION_NOT_AVAILABLE。 如果要恢复带有内容过滤器的预订,但扩展消息选择提供程序不可用,MQSUB 调用将返回警告 MQRC_SELECTION_NOT_AVAILABLE,但允许恢复预订。