Queue rules - Java™ example 1

This example shows a possible use of the message expired rule, and a copy of the message is put onto a Dead Letter Queue. Both queues and messages can have an expiry interval set. If this interval is exceeded, the message is flagged as being expired. At this point the messageExpired() rule is called. On return from this rule, the expired message is deleted.

/* This rule puts a copy of any expired messages to a Dead Letter Queue */

public boolean messageExpired( MQeFields entry, MQeMsgObject msg ) 
           throws Exception   {

    /* Get the reference to the Queue Manager */
    MQeQueueManager qmgr = MQeQueueManager.getReference( 
                           ((MQeQueueProxy)owner).getQueueManagerName());
    /* need to set re-send flag so that put of message 
      to new queue isn't rejected */
    msg.putBoolean( MQe.Msg_Resend, true );
     /* if the message contains an expiry 
        interval field - remove it */
    if ( msg.contains( MQe.Msg_ExpireTime )    {
        msg.delete( MQe.Msg_ExpireTime );
    }
    /* put message onto dead letter queue */
    qmgr.putMessage( null, MQe.DeadLetter_Queue_Name, 
                msg, null, 0 );
    /* Return true. Note that no use is made 
        of this return value - the message is          
      always deleted but the return value is kept 
      for backward compatibility */
    return (true);
}

Terms of use | WebSphere software

(c) Copyright IBM Corporation 2004, 2005. All rights reserved.