User: chirino
Date: 01/06/18 16:39:07
Modified: src/main/org/jbossmq SpyMessageConsumer.java
Log:
Bug fix for Message Re-Delivery bug.
Revision Changes Path
1.4 +38 -28 jbossmq/src/main/org/jbossmq/SpyMessageConsumer.java
Index: SpyMessageConsumer.java
===================================================================
RCS file: /cvsroot/jboss/jbossmq/src/main/org/jbossmq/SpyMessageConsumer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SpyMessageConsumer.java 2001/03/02 01:12:40 1.3
+++ SpyMessageConsumer.java 2001/06/18 23:39:07 1.4
@@ -26,7 +26,7 @@
* @author Norbert Lataille ([EMAIL PROTECTED])
* @author Hiram Chirino ([EMAIL PROTECTED])
*
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class SpyMessageConsumer implements MessageConsumer, SpyConsumer {
@@ -182,7 +182,9 @@
if ( this instanceof SpyQueueReceiver ||
subscription.durableSubscriptionName!=null ) {
if (session.modeStop)
return null;
- return session.connection.receive(getSubscription(),
-1);
+
+ SpyMessage msg =
session.connection.receive(getSubscription(), -1);
+ return preProcessMessage( msg );
}
synchronized (messages) {
@@ -340,41 +342,49 @@
//the SAME Message object is put in different
SessionQueues
//when we deliver it, we have to clone() it to
insure independance
+ //HRC: could we avoid this if we know that we
are delivering in P2P???
SpyMessage message = mes.myClone();
- message.session = session;
- // Has the message expired?
- if (mes.isOutdated()) {
- Log.notice("SessionQueue: I dropped a
message (timeout)");
- if ( message.shouldAck )
- message.doAcknowledge();
+ Message rc = preProcessMessage( message );
+ // could happen if the message has expired.
+ if( rc == null )
continue;
- }
-
- // Should we try to ack before the message is
processed?
- if (messageListener == null) {
-
- if (message.shouldAck &&
session.transacted) {
-
session.connection.spyXAResourceManager.ackMessage(session.currentTransactionId,
message);
- } else if (message.shouldAck &&
session.acknowledgeMode == session.AUTO_ACKNOWLEDGE || session.acknowledgeMode ==
session.DUPS_OK_ACKNOWLEDGE) {
- message.doAcknowledge();
- }
-
- if( message instanceof
SpyEncapsulatedMessage )
- return
((SpyEncapsulatedMessage)message).getMessage();
- return message;
-
- } else {
- return message;
- }
+
+ return rc;
} catch (Exception e) {
e.printStackTrace();
}
-
}
+ }
+ }
+ Message preProcessMessage(SpyMessage message) throws JMSException {
+ message.session = session;
+
+ // Has the message expired?
+ if (message.isOutdated()) {
+ Log.notice("SessionQueue: I dropped a message (timeout)");
+ if ( message.shouldAck )
+ message.doAcknowledge();
+ return null;
}
+ // Should we try to ack before the message is processed?
+ if (messageListener == null) {
+
+ if (message.shouldAck && session.transacted) {
+
session.connection.spyXAResourceManager.ackMessage(session.currentTransactionId,
message);
+ } else if (message.shouldAck && session.acknowledgeMode ==
session.AUTO_ACKNOWLEDGE || session.acknowledgeMode == session.DUPS_OK_ACKNOWLEDGE) {
+ message.doAcknowledge();
+ }
+
+ if( message instanceof SpyEncapsulatedMessage )
+ return ((SpyEncapsulatedMessage)message).getMessage();
+ return message;
+
+ } else {
+ return message;
+ }
}
-}
\ No newline at end of file
+}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development