Multicast exception reporting

Use this information to learn about IBM® MQ Multicast event handlers and reporting IBM MQ Multicast exceptions.

IBM MQ Multicast assists with problem determination by calling the event handler to report multicast events which are reported using the standard IBM MQ event handler mechanism.

An individual Multicast event can result in more than one IBM MQ event being called because there might be multiple MQHCONN connection handles using the same multicast transmitter or receiver. However, each multicast exception causes only one event handler to be called per IBM MQ connection.

The IBM MQ MQCBDO_EVENT_CALL constant enables applications to register a callback to receive only IBM MQ events, and the MQCBDO_MC_EVENT_CALL enable applications to register a callback to receive only multicast events. If both constants are used, both types of event are received.

Requesting Multicast events

IBM MQ Multicast events use the MQCBDO_MC_EVENT_CALL constant in the cbd.Options field. The following example demonstrates how to request multicast events:

cbd.CallbackType     = MQCBT_EVENT_HANDLER;
cbd.Options          = MQCBDO_MC_EVENT_CALL;
cbd.CallbackFunction = EventHandler;
MQCB(Hcon,MQOP_REGISTER,&cbd,MQHO_UNUSABLE_HOBJ,NULL,NULL,&CompCode,&Reason);
When the MQCBDO_MC_EVENT_CALL option is specified for the cbd.Options field, the event handler is sent only IBM MQ Multicast events instead of connection level events. To request that both types of events are sent to the event handler, the application must specify the MQCBDO_EVENT_CALL constant in the cbd.Options field as well as the MQCBDO_MC_EVENT_CALL constant as shown in the following example:

cbd.CallbackType     = MQCBT_EVENT_HANDLER;
cbd.Options          = MQCBDO_EVENT_CALL | MQCBDO_MC_EVENT_CALL
cbd.CallbackFunction = EventHandler;
MQCB(Hcon,MQOP_REGISTER,&cbd,MQHO_UNUSABLE_HOBJ,NULL,NULL,&CompCode,&Reason);
If neither of these constants is used, only connection level events are sent to the event handler.

For more information about values for the Options field see Options (MQLONG).

Multicast event format

IBM MQ Multicast exceptions include some supporting information which is returned in the Buffer parameter of the callback function. The Buffer pointer points to an array of pointers and the MQCBC.DataLength field specifies the size, in bytes, of the array. The first element of the array always points to a short text description of the event. More parameters might be supplied depending on the type of event. The following table lists the exceptions:
Table 1. Multicast event code descriptions
Event code Description Additional data
MQMCEV_PACKET_LOSS Unrecoverable packet loss Number of lost packets
MQMCEV_HEARTBEAT_TIMEOUT Long absence of heartbeat control packet N/A
MQMCEV_VERSION_CONFLICT Reception of newer protocol version packets N/A
MQMCEV_RELIABILITY Different reliability modes of the transmitter and the receiver N/A
MQMCEV_CLOSED_TRANS Topic transmission is closed by 1 source N/A
MQMCEV_STREAM_ERROR Error detected on stream N/A
MQMCEV_NEW_SOURCE A new source starts to transmit on the topic Source structure
MQMCEV_RECEIVE_QUEUE_TRIMMED Packets removed from PacketQ due to time or space expiration Number of trimmed packets
MQMCEV_PACKET_LOSS_NACK_EXPIRE Unrecoverable packet loss due to NACK expiration Number of lost packets
MQMCEV_ACK_RETRIES_EXCEEDED Packets removed from history after max_ack_retries was exceeded Number of packets removed
MQMCEV_STREAM_SUSPEND_NACK NACKs have been suspended on a stream accepted by this topic Suspend stream ID

Time in milliseconds that the stream is suspended for

MQMCEV_STREAM_RESUME_NACK NACKs have been resumed after they have been suspended on a stream Stream ID
MQMCEV_STREAM_EXPELLED A stream accepted by this topic has been rejected due to an expel request Stream ID
MQMCEV_FIRST_MESSAGE First message from a source Message number
MQMCEV_LATE_JOIN_FAILURE Failed to start late join session N/A
MQMCEV_MESSAGE_LOSS Unrecoverable message loss Number of lost messages
MQMCEV_SEND_PACKET_FAILURE Multicast transmitter failed to send a multicast packet N/A
MQMCEV_REPAIR_DELAY Multicast receiver did not receive a repair packet for an outstanding NAK N/A
MQMCEV_MEMORY_ALERT_ON Receiver reception buffers are filling up Buffer pool utilization percentage
MQMCEV_MEMORY_ALERT_OFF Receiver reception buffers are down to normal Buffer pool utilization percentage
MQMCEV_NACK_ALERT_ON Receiver repair packet request rate reached high water mark Current repair request rate in packets per second
MQMCEV_NACK_ALERT_OFF Receiver repair packet request rate is down to normal Current repair request rate in packets per second
MQMCEV_REPAIR_ALERT_ON Transmitter repair packet send rate reached high water mark N/A
MQMCEV_REPAIR_ALERT_OFF Transmitter repair packet send rate is down to normal N/A
MQMCEV_SHM_DEST_UNUSABLE The Shared Memory region used by a transmitter topic destination has been detected to be unusable N/A
MQMCEV_SHM_PORT_UNUSABLE The Shared Memory port used by a receiver instance has been detected to be unusable N/A
MQMCEV_CCT_GETTIME_FAILED The get time from Coordinated Cluster Time failed N/A
MQMCEV_DEST_INTERFACE_FAILURE The network interface used by a transmitter topic destination has failed and a backup network interface is unavailable  
MQMCEV_DEST_INTERFACE_FAILOVER The network interface used by a transmitter topic destination has failed and a successful failover to another Interface has been completed  
MQMCEV_PORT_INTERFACE-FAILURE The network interface used by a receiver rmmPort has failed and a backup network interface is unavailable (or has also failed) RMM configuration
MQMCEV_PORT_INTERFACE_FAILOVER The network interface used by a receiver rmmPort has failed and a successful failover to another Interface has been completed RMM configuration