IP Library Granted Patent US 7,996,849
Granted Patent B2
US 7,996,849 · App. 12/022,170 · Granted Aug 9, 2011

Method, apparatus and software for managing a transactional message queue

Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,996,849
App. No.
12/022,170
Granted
Aug 9, 2011
Kind
B2
Abstract

Provided are a method, apparatus and a computer program for managing message queues. Message streaming is enabled in a transactional messaging system that supports priority ordering of messages, without the need for complex locking mechanisms. Any messages which are transferred from a message queue to a message consumer after the message consumer initiates commit processing are replaced on the message queue at an appropriate position ahead of other messages. As part of commit processing, the consumer sends back to the manager of the message queue an identification of messages delivered to it before the commit, and this list of messages is extracted and compared with a message log to identify undelivered messages. Successfully delivered and committed messages can be committed by the queue manager, and undelivered messages can be replaced on the queue. A special high priority is assigned to the replaced messages to place them ahead of other messages.

Claims (39)

1. A method for managing a message queue in a transactional messaging system, said method comprising:

receiving a first set of messages onto the message queue, said first set of messages being ordered earliest received first on said queue;

sending a second set of one or more of said messages from the front of said queue to a message consumer;

receiving a commit message from said message consumer, said commit message indicating a third set of messages to be committed;

identifying any messages in said second set of messages and not in said third set of messages; and

replacing said identified messages ordered earliest received first onto said queue ahead of any messages in said first set of messages and not in said second set of messages.

2. The method according to claim 1 , wherein said second set of messages are sent to said message consumer in response to a notification of the start of a transaction, said notification received from said message consumer.

3. The method according to claim 2 , wherein one of a first set of ordered priority levels is assigned to each of said first set of messages, said messages being ordered on said queue firstly by highest priority level first and secondly earliest received first, and wherein said priority level assigned to said identified messages is incremented when said messages are replaced on said queue.

4. The method according to claim 3 , wherein the highest priority level is only assignable to identified messages when said messages are replaced on said queue.

5. The method according to claim 3 , wherein a second set of ordered priority levels having values intermediate to the values of said first set of ordered priority levels are assigned exclusively to said identified messages when said messages are replaced on said queue.

6. The method of claim 2 , wherein the relative time of arrival of each said message on said queue is recorded against the respective message.

7. The method according to claim 6 , wherein said relative time of arrival is updated for said message if said message is one of said identified messages replaced on said queue.

8. The method according claim 2 , wherein said messages are streamed from said queue to said message consumer.

9. The method according to claim 2 , wherein said message queue forms part of a message orientated middleware system.

10. The method according to claim 9 , wherein said message queue is provided by a Java messaging system provider.

11. An apparatus for managing a message queue in a transactional messaging system, the apparatus comprising:

a message receiving interface for receiving a first set of messages;

a memory for storing a message queue onto which said first set of messages are placed, ordered earliest received first;

a message dispatching interface arranged for sending a second set of one or more of said messages from the front of said queue to a message consumer; and

a processor arranged, in response to a commit message from said consumer indicating a third set of messages to be committed, to identify any messages in said second set of messages and not in said third set of messages and to replace said identified messages ordered earliest received first onto said queue ahead any messages in said first set of messages and not in said second set of messages.

12. The apparatus according to claim 11 , wherein said message dispatching interface is further arranged for sending the second set of messages to said message consumer in response to a notification of the start of a transaction, said notification received from said message consumer.

13. The apparatus according to claim 12 , wherein one of a first set of ordered priority levels is assigned to each of said first set of messages, said messages being ordered on said queue firstly by highest priority level first and secondly earliest received first, and wherein said priority level assigned to said identified messages is incremented when said messages are replaced on said queue.

14. The apparatus according to claim 13 , wherein the highest priority level is only assignable to identified messages being replaced on said queue.

15. The apparatus according to claim 13 , wherein a second set of ordered priority levels having values intermediate to the values of said first set of ordered priority levels are assignable exclusively to said identified messages replaced on said queue.

16. The apparatus according to claim 12 , wherein said processor is further arranged to record against each said message the relative time of arrival of the respective message.

17. The apparatus according to claim 16 , wherein said processor is further arranged to update the relative time of arrival for said message if said message is one of said identified messages replaced on said queue.

18. The apparatus according to claim 12 , wherein said message dispatching interface is further arranged for streaming messages from said queue to said consumer.

19. The apparatus according to claim 12 , wherein said message queue comprises a part of a message orientated middleware system.

20. The apparatus according to claim 19 , wherein said message queue is provided by a Java messaging system provider.

21. A computer program product for managing a message queue in a transactional messaging system comprising a computer usable storage medium having computer usable program code embodied therewith, said computer usable program code comprising:

computer usable program code configured to receive a first set of messages onto the message queue, said first set of messages being ordered earliest received first on said queue;

computer usable program code configured to send a second set of one or more of said messages from the front of said queue to a message consumer;

computer usable program code configured to receive a commit message from said message consumer, said commit message indicating a third set of messages to be committed;

computer usable program code configured to identify any messages in said second set of messages and not in said third set of messages; and

computer usable program code configured to replace said identified messages ordered earliest received first onto said queue ahead of any messages in said first set of messages and not in said second set of messages.

22. The computer program product according to claim 21 , wherein said second set of messages are sent to said message consumer in response to a notification of the start of a transaction, said notification received from said message consumer.

23. The computer program product according to claim 22 , wherein one of a first set of ordered priority levels is assigned to each of said first set of messages, said messages being ordered on said queue firstly by highest priority level first and secondly earliest received first, and wherein said priority level assigned to said identified messages is incremented when said messages are replaced on said queue.

24. The computer program product according to claim 23 , wherein the highest priority level is only assignable to identified messages when said messages are replaced on said queue.

25. The computer program product according to claim 23 , wherein a second set of ordered priority levels having values intermediate to the values of said first set of ordered priority levels are assigned exclusively to said identified messages when said messages are replaced on said queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2008
From: GARRARD, ANTHONY ALAN; LOCKE, DAVID JOHN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 020435/0309 →
Continuity (1)
Related Publication 20080196039A1 · Aug 14, 2008