IP Library Granted Patent US 7,640,357
Granted Patent B2
US 7,640,357 · App. 10/836,902 · Granted Dec 29, 2009

Transmitting enterprise messages based on buffer sizes

Assignee: SAP AG
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,640,357
App. No.
10/836,902
Granted
Dec 29, 2009
Kind
B2
Abstract

Methods and apparatuses for buffering enterprise messages are described herein. In one embodiment, an exemplary process is provided to transmit, from a messaging server to a client, a first message indicating a size of a next enterprise message to be sent to the client. A second message is received from the client in response to the first message, where the second message indicates a buffer size available to store messages for the client. The next enterprise message is then delivered to the buffer of the client if the size of the next enterprise message is smaller than or equal to the size of the available buffer of the client. Other methods and apparatuses are also described.

Claims (71)

1. A method for processing messages in an enterprise computing environment, the method comprising:

storing in a messaging server an available buffer size at a client to store messages to be received at the client, the messages to be sent to the client sequentially including a first message and a second message that is to be immediately sent following the first message;

preparing the first message to be transmitted to the client if it is determined that the available buffer size at the client is greater than or equal to a size of the first message;

determining the available buffer size at the client to store the second message to be received at the client;

setting an end-of-message indicator in the first message to indicate the end of a current message delivery session if it is determined that the available buffer size at the client is not large enough to receive the second message;

specifying in a payload of the first message data indicating a size of the second message to be delivered to allow the client to allocate additional buffer space for storing the second message if it is determined that the available buffer size at the client is not large enough to receive the second message;

transmitting, from the messaging server to the client, the first message including the end-of-message indicator and the data indicating a size of the second message to be sent to the client immediately following the first message if the determined available buffer size at the client is smaller than the size of the second message;

receiving a third message from the client in response to transmitting the first message, the third message indicating a new available buffer size to store messages at the client;

deducting a size of a message from the new available buffer size to store messages at the client;

updating the available buffer size stored in the messaging server with the new available buffer size according to the third message; and

sending the second message to the client if the size of the second message is smaller than or equal to the new available buffer size to store messages at the client.

2. The method of claim 1 , wherein the messaging server is a Java messaging service (JMS) compatible provider.

3. The method of claim 2 , wherein the client is a JMS compatible consumer.

4. The method of claim 2 , wherein the second message is associated with a topic produced by a producer coupled to the JMS provider and subscribed to by the client.

5. A machine-readable medium when executed by a processor, causes the processor to perform a method for processing messages, the method comprising:

storing in a messaging server a size for available buffer to store messages to be received in a client, the messages to be sent to the client sequentially including a first message and a second message that is immediately sent following the first message;

preparing the first message to be transmitted to the client if it is determined that the size available buffer of the client is greater than or equal to a size of the first message;

determining the size for the available buffer to store the second message to be received in the client;

setting an end-of-message indicator in the first message to indicate the end of a current message delivery session if it is determined that the size of the available buffer of the client is not large enough to receive the second message;

specifying in a payload of the first message data indicating a size of the second message to be delivered to allow the client to allocate additional buffer for storing the second message;

transmitting, from the messaging server to the client, the first message including the end-of-message indicator and the data indicating a size of the second message to be sent to the client immediately following the first message if the determined size for the available buffer to store messages in the client is smaller than the size of the second message;

receiving a third message from the client in response to the first message, the third message indicating a buffer size available to store messages for the client;

deducting a size of a message from the size for the available buffer to store messages in the client;

updating the size for the available buffer to store messages in the client according to the buffer size in the third message; and

sending the second message to the buffer of the client if the size of the second message is smaller than or equal to the size for the available buffer to store messages in the client.

6. The machine-readable medium of claim 5 , wherein the messaging server is a Java messaging service (JMS) compatible provider.

7. The machine-readable medium of claim 6 , wherein the client is a JMS compatible consumer.

8. The machine-readable medium of claim 6 , wherein the second message is associated with a topic produced by a producer coupled to the JMS provider and subscribed by the client.

9. An enterprise messaging system, comprising:

a processor;

a memory coupled to the processor; and

a process when executed from the memory, causes the processor to

store in the memory a size for available buffer to store messages to be received in a client, the messages to be sent to the client sequentially including a first message and a second message that is immediately sent following the first message,

prepare the first message to be transmitted to the client if it is determined that the size available buffer of the client is greater than or equal to a size of the first message,

determine the size for the available buffer to store the second message to be received in the client,

set an end-of message indicator in the first message to indicate the end of a current message delivery session if it is determined that the size of the available buffer of the client is not large enough to receive the second message,

specify in a payload of the first message data indicating a size of the second message to be delivered to allow the client to allocate additional buffer for storing the second message,

transmit, from the messaging server to the client, the first message including the end-of message indicator and the data indicating a size of the second message to be sent to the client immediately following the first message if the determined size for the available buffer to store messages in the client is smaller than the size of the second message,

receive a third message from the client in response to the first message, the third message indicating a buffer size available to store messages for the client,

deduct a size of a message from the size for the available buffer to store messages in the client,

update the size for the available buffer to store messages in the client according to the buffer size in the third message, and

send the second message to the buffer of the client if the size of the second message is smaller than or equal to the size for the available buffer to store messages in the client.

10. A method for processing messages in an enterprise computing environment, the method comprising:

receiving a first message from a server, the first message including an end-of message indicator indicating an end of current message delivery for the first message, wherein a payload of the first message further includes a size of a second message pending to be delivered immediately following the first message from a message queue maintained in the server, wherein the message queue is used to store a plurality of messages to be received in sequence;

determining whether a size of a buffer available to receive messages is greater than or equal to the size of the second message;

dynamically allocating an additional buffer that is large enough to receive the second message;

transmitting a third message to the server to start receiving the second message if the size of the buffer available to receive messages is greater than or equal to the size of the second message,

wherein the third message includes the size of the buffer available to receive messages including the dynamically allocated additional buffer and the third message is used by the server to determine whether to deliver the second message.

11. The method of claim 10 , wherein the additional buffer is allocated from a pool of memories shared among a plurality of consumers.

12. The method of claim 10 , wherein the messaging server is a Java message service (JMS) compatible provider.

13. The method of claim 12 , wherein the client is a JMS compatible consumer.

14. The method of claim 10 , wherein the second message is associated with a topic published by a produced coupled to the JMS provider and the client is a subscriber to the topic.

15. A machine-readable medium when executed by a processor, causes the processor to perform a method for processing messages, the method comprising:

receiving a first message from a server, the first message including an end-of message indicator indicating an end of current message delivery for the first message, wherein a payload of the first message further includes a size of a second message pending to be delivered immediately following the first message from a message queue maintained in the server, wherein the message queue is used to store a plurality of messages to be received in sequence;

determining whether a size of a buffer available to receive messages is greater than or equal to the size of the second message;

dynamically allocating an additional buffer that is large enough to receive the second message;

transmitting a third message to the server to start receiving the second message if the size of the buffer available to receive messages is greater than or equal to the size of the second message,

wherein the third message includes the size of the buffer available to receive messages including the dynamically allocated additional buffer and the third message is used by the server to determine whether to deliver the second message.

16. The machine-readable medium of claim 15 , wherein the additional buffer is allocated from a pool of memories shared among a plurality of consumers.

17. The machine-readable medium of claim 15 , wherein the messaging server is a Java message service (JMS) compatible provider.

18. The machine-readable medium of claim 17 , wherein the client is a JMS compatible consumer.

19. The machine-readable medium of claim 15 , wherein the second message is associated with a topic published by a produced coupled to the JMS provider and the client is a subscriber to the topic.

20. An enterprise messaging system, comprising:

a processor;

a memory coupled to the processor; and

a process when executed from the memory, causes the processor to

receive a first message from a server, the first message including an end-of-message indicator indicating an end of current message delivery for the first message, wherein a payload of the first message further includes a size of a second message pending to be delivered immediately following the first message from a message queue maintained in the server, wherein the message queue is used to store a plurality of messages to be received in sequence,

determine whether a size of a buffer available to receive messages is greater than or equal to the size of the second message,

dynamically allocate an additional buffer that is large enough to receive the second message,

transmit a third message to the server to start receiving the second message if the size of the buffer available to receive messages is greater than or equal to the size of the second message, and

wherein the third message includes the size of the buffer available to receive messages including the dynamically allocated additional buffer and the third message is used by the server to determine whether to deliver the second message.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0334 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 3, 2004
From: KIROV, MARGARIT P.; FOLLMEG, BERND; NIKOLOV, RADOSLAV I.; KOEGEL, MICHAEL
To: SAP AKTIENGESELLSCHAFT
Reel/Frame 015945/0223 →
Continuity (1)
Related Publication 20050262215A1 · Nov 24, 2005