Hi all,
I have done some testing related to MB's session transactions. We do have
an issue with order of messages when session is roll-backed.
JMS broker need to maintain order of the messages in case of session
rollbacks.
When session is rollbacked, it need to resume from last commited location
of the queue.
producer:
con.start();
Session session = con.createSession(true,
Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
MessageProducer producer =
session.createProducer(destination);
for (int x = 1; x <= 100; ++x) {
String msg = Integer.toString(x);
TextMessage textMessage =
session.createTextMessage(msg);
producer.send(textMessage);
System.out.println("sending message = " + x);
i++;
}
session.commit();
producer.close();
session.close();
con.close();
consumer:
con.start();
Session session = con.createSession(true,
Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
MessageConsumer consumer = session.createConsumer(destination);
int i = 1;
while (true) {
TextMessage msg = (TextMessage) consumer.receive(60000);
if (msg == null) {
System.out.println("No message within 60secs");
break;
} else {
System.out.println("i=" + i + " - " + msg.getText());
++i;
if (Integer.parseInt(msg.getText()) % 10 == 0) {
session.rollback();
System.out.println("Rollback message" +
msg.getText());
} else {
session.commit();
}
}
}
consumer.close();
session.close();
con.close();
When test ran, once rollback called message starts getting shuffled and
number of redelivers also not consistent (every message suppose to
redeliver 10 times but most message redeliverd < 10 ). See attached logs.
Seems that maintaining message order with rollbacks is tricky as we do not
have a mechanism to backtrack queue pointer in case of rollback. Any idea
about how to fix this?
--
Miyuru Wanninayaka
Technical Lead
WSO2 Inc. : http://wso2.com
Mobile : +94 77 209 9788
Blog : http://miyurudw.blogspot.com
Flickr : http://www.flickr.com/photos/miyuru_daminda
i=1 - 1
i=2 - 2
i=3 - 3
i=4 - 4
i=5 - 5
i=6 - 6
i=7 - 7
i=8 - 8
i=9 - 9
i=10 - 10
Rollback message10
i=11 - 29
i=12 - 30
Rollback message30
i=13 - 37
i=14 - 38
i=15 - 39
i=16 - 40
Rollback message40
i=17 - 45
i=18 - 46
i=19 - 47
i=20 - 48
i=21 - 49
i=22 - 50
Rollback message50
i=23 - 56
i=24 - 57
i=25 - 58
i=26 - 59
i=27 - 60
Rollback message60
i=28 - 65
i=29 - 66
i=30 - 67
i=31 - 68
i=32 - 69
i=33 - 70
Rollback message70
i=34 - 73
i=35 - 74
i=36 - 75
i=37 - 76
i=38 - 77
i=39 - 78
i=40 - 79
i=41 - 80
Rollback message80
i=42 - 84
i=43 - 85
i=44 - 86
i=45 - 87
i=46 - 88
i=47 - 89
i=48 - 90
Rollback message90
i=49 - 95
i=50 - 96
i=51 - 97
i=52 - 98
i=53 - 99
i=54 - 100
Rollback message100
i=55 - 10
Rollback message10
i=56 - 12
i=57 - 13
i=58 - 14
i=59 - 15
i=60 - 16
i=61 - 17
i=62 - 18
i=63 - 19
i=64 - 20
Rollback message20
i=65 - 26
i=66 - 27
i=67 - 28
i=68 - 30
Rollback message30
i=69 - 35
i=70 - 36
i=71 - 40
Rollback message40
i=72 - 50
Rollback message50
i=73 - 54
i=74 - 55
i=75 - 60
Rollback message60
i=76 - 64
i=77 - 70
Rollback message70
i=78 - 83
i=79 - 90
Rollback message90
i=80 - 100
Rollback message100
i=81 - 10
Rollback message10
i=82 - 20
Rollback message20
i=83 - 24
i=84 - 25
i=85 - 30
Rollback message30
i=86 - 34
i=87 - 40
Rollback message40
i=88 - 44
i=89 - 50
Rollback message50
i=90 - 53
i=91 - 60
Rollback message60
i=92 - 70
Rollback message70
i=93 - 80
Rollback message80
i=94 - 90
Rollback message90
i=95 - 93
i=96 - 94
i=97 - 100
Rollback message100
i=98 - 10
Rollback message10
i=99 - 20
Rollback message20
i=100 - 30
Rollback message30
i=101 - 40
Rollback message40
i=102 - 50
Rollback message50
i=103 - 61
i=104 - 62
i=105 - 63
i=106 - 70
Rollback message70
i=107 - 81
i=108 - 82
i=109 - 90
Rollback message90
i=110 - 10
Rollback message10
i=111 - 20
Rollback message20
i=112 - 30
Rollback message30
i=113 - 40
Rollback message40
i=114 - 43
i=115 - 50
Rollback message50
i=116 - 60
Rollback message60
i=117 - 90
Rollback message90
i=118 - 10
Rollback message10
i=119 - 20
Rollback message20
i=120 - 30
Rollback message30
i=121 - 40
Rollback message40
i=122 - 51
i=123 - 52
i=124 - 60
Rollback message60
i=125 - 80
Rollback message80
i=126 - 91
i=127 - 92
i=128 - 100
Rollback message100
i=129 - 10
Rollback message10
i=130 - 20
Rollback message20
i=131 - 30
Rollback message30
i=132 - 40
Rollback message40
i=133 - 60
Rollback message60
i=134 - 80
Rollback message80
i=135 - 100
Rollback message100
i=136 - 10
Rollback message10
i=137 - 20
Rollback message20
i=138 - 30
Rollback message30
i=139 - 33
i=140 - 40
Rollback message40
i=141 - 60
Rollback message60
i=142 - 90
Rollback message90
i=143 - 10
Rollback message10
i=144 - 20
Rollback message20
i=145 - 23
i=146 - 30
Rollback message30
i=147 - 42
i=148 - 50
Rollback message50
i=149 - 71
i=150 - 72
i=151 - 80
Rollback message80
i=152 - 10
Rollback message10
i=153 - 20
Rollback message20
i=154 - 31
i=155 - 32
i=156 - 40
Rollback message40
i=157 - 60
Rollback message60
i=158 - 90
Rollback message90
No message within 60secs
i=1 - 1
i=2 - 2
i=3 - 3
i=4 - 4
i=5 - 5
i=6 - 6
i=7 - 7
i=8 - 8
i=9 - 9
i=10 - 10
Rollback message10
i=11 - 29
i=12 - 30
Rollback message30
i=13 - 39
i=14 - 40
Rollback message40
i=15 - 45
i=16 - 46
i=17 - 47
i=18 - 48
i=19 - 49
i=20 - 50
Rollback message50
i=21 - 55
i=22 - 56
i=23 - 57
i=24 - 58
i=25 - 59
i=26 - 60
Rollback message60
i=27 - 65
i=28 - 66
i=29 - 67
i=30 - 68
i=31 - 69
i=32 - 70
Rollback message70
i=33 - 76
i=34 - 77
i=35 - 78
i=36 - 79
i=37 - 80
Rollback message80
i=38 - 85
i=39 - 86
i=40 - 87
i=41 - 88
i=42 - 89
i=43 - 90
Rollback message90
i=44 - 96
i=45 - 97
i=46 - 98
i=47 - 99
i=48 - 100
Rollback message100
i=49 - 10
Rollback message10
i=50 - 12
i=51 - 13
i=52 - 14
i=53 - 15
i=54 - 16
i=55 - 17
i=56 - 18
i=57 - 19
i=58 - 20
Rollback message20
i=59 - 25
i=60 - 26
i=61 - 27
i=62 - 28
i=63 - 30
Rollback message30
i=64 - 34
i=65 - 35
i=66 - 36
i=67 - 37
i=68 - 38
i=69 - 40
Rollback message40
i=70 - 50
Rollback message50
i=71 - 60
Rollback message60
i=72 - 64
i=73 - 70
Rollback message70
i=74 - 75
i=75 - 80
Rollback message80
i=76 - 91
i=77 - 92
i=78 - 93
i=79 - 94
i=80 - 95
i=81 - 100
Rollback message100
i=82 - 10
Rollback message10
i=83 - 20
Rollback message20
i=84 - 24
i=85 - 30
Rollback message30
i=86 - 40
Rollback message40
i=87 - 43
i=88 - 44
i=89 - 50
Rollback message50
i=90 - 54
i=91 - 60
Rollback message60
i=92 - 63
i=93 - 70
Rollback message70
i=94 - 74
i=95 - 80
Rollback message80
i=96 - 84
i=97 - 90
Rollback message90
i=98 - 10
Rollback message10
i=99 - 20
Rollback message20
i=100 - 30
Rollback message30
i=101 - 40
Rollback message40
i=102 - 51
i=103 - 52
i=104 - 53
i=105 - 60
Rollback message60
i=106 - 70
Rollback message70
i=107 - 73
i=108 - 80
Rollback message80
i=109 - 83
i=110 - 90
Rollback message90
i=111 - 10
Rollback message10
i=112 - 20
Rollback message20
i=113 - 30
Rollback message30
i=114 - 40
Rollback message40
i=115 - 60
Rollback message60
i=116 - 71
i=117 - 72
i=118 - 80
Rollback message80
i=119 - 82
i=120 - 90
Rollback message90
i=121 - 10
Rollback message10
i=122 - 20
Rollback message20
i=123 - 30
Rollback message30
i=124 - 40
Rollback message40
i=125 - 60
Rollback message60
i=126 - 70
Rollback message70
i=127 - 10
Rollback message10
i=128 - 20
Rollback message20
i=129 - 30
Rollback message30
i=130 - 33
i=131 - 40
Rollback message40
i=132 - 50
Rollback message50
i=133 - 62
i=134 - 70
Rollback message70
i=135 - 90
Rollback message90
i=136 - 10
Rollback message10
i=137 - 20
Rollback message20
i=138 - 30
Rollback message30
i=139 - 40
Rollback message40
i=140 - 50
Rollback message50
i=141 - 80
Rollback message80
i=142 - 10
Rollback message10
i=143 - 20
Rollback message20
i=144 - 23
i=145 - 30
Rollback message30
i=146 - 40
Rollback message40
i=147 - 61
i=148 - 70
Rollback message70
i=149 - 10
Rollback message10
i=150 - 20
Rollback message20
i=151 - 31
i=152 - 32
i=153 - 40
Rollback message40
i=154 - 50
Rollback message50
i=155 - 81
i=156 - 90
Rollback message90
No message within 60secs
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev