US20140215492A1 - Dynamic provisioning of message groups - Google Patents
Dynamic provisioning of message groups Download PDFInfo
- Publication number
- US20140215492A1 US20140215492A1 US13/756,054 US201313756054A US2014215492A1 US 20140215492 A1 US20140215492 A1 US 20140215492A1 US 201313756054 A US201313756054 A US 201313756054A US 2014215492 A1 US2014215492 A1 US 2014215492A1
- Authority
- US
- United States
- Prior art keywords
- message
- messages
- group
- message group
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Definitions
- This specification relates to dynamically provisioning groups of messages in a message queue.
- message queues are often used for inter-process communication, for inter-thread communication within the same process, and for communication between processes at separate computing systems.
- a message queue is a way to pass control or content from one process or thread to another.
- a sender that places a message on a message queue does not need to interact with the message queue at the same time as a receiver that takes the message off of the message queue. Messages placed onto the queue are stored until the recipient retrieves them.
- a system administrator installs and configures message queue management software, such as a message queue broker.
- the system administrator uses the message queue broker to define a message queue, which may include defining a name for the message queue.
- Receiver applications may then register software routines that listen for messages placed onto the message queue.
- Sender applications may connect to the message queue and transfer messages onto it.
- the message queue broker stores the messages until receiver applications connect and then call registered software routines to retrieve messages from the message queue. The receiver applications then process the retrieved messages.
- FIG. 1 is a schematic diagram that shows an example of a system for dynamically provisioning groups of messages in a message queue.
- FIG. 2 is flow chart that shows an example of a process for dynamically provisioning groups of messages in a message queue.
- FIG. 3 is a schematic diagram that shows an example of a computing system.
- This document describes messaging systems and messaging techniques for dynamically provisioning groups of messages in a message queue.
- the systems and techniques automatically create and/or remove message groups on a message queue as messages are added to and/or removed from the message queue, respectively.
- a message producer may add messages to a particular message group on a message queue using an identifier of the message group and a message consumer may remove messages from the message group without specifying the identifier of the message group. This may provide the advantage of allowing a message consumer to interoperate with the messaging system even though the message consumer may not have access to or knowledge of identifiers for the message groups.
- a message broker and/or message exchanges may participate in the messaging system without pre-existing (e.g., before a message being added to a message group is received) access to or knowledge of message group identifiers to be used by message producers in the messaging system.
- a message exchange that assigns messages from the message group to the message consumer may provide the advantage of ensuring consistency of message processing within the message group (e.g., ensuring that messages are processed in a particular order) without requiring configuration of the message group at the message exchange and/or the message queue.
- FIG. 1 is a schematic diagram that shows an example of a system 100 for dynamically provisioning groups of messages in a message queue.
- the system 100 includes a message broker 102 in communication with at least one message producer 104 and one or more message consumers 106 a - c .
- the message broker 102 , the message producer 104 , and the message consumers 106 a - c are applications that are each in operation at a computing device.
- the message broker 102 , the message producer 104 , and the message consumers 106 a - c may be in operation at the same computing device.
- one or more of the message broker 102 , the message producer 104 , and the message consumers 106 a - c may be in operation at separate computing devices.
- one or more of the message broker 102 , the message producer 104 , and the message consumers 106 a - c may be in communication over a network, such as a local network or the Internet.
- a network such as a local network or the Internet.
- one or more of the message broker 102 , the message producer 104 , and the message consumers 106 a - c may be in operation within a virtual machine at a computing device.
- the message broker 102 manages one or more message exchanges 108 a - c .
- the messages exchanges 108 a - c can be part of the message broker 102 or components separate from the message broker 102 .
- the message broker 102 and the message exchanges 108 a - c may represent a messaging system that implements various aspects of the present disclosure.
- the message exchanges 108 a - c add messages to and remove messages from one or more message queues 110 a - c .
- the message producer 104 may send a request 112 to the message broker 102 to add one or more messages to a message queue.
- the request 112 includes an identifier of a message exchange, such as the first message exchange 108 a , to process the request 112 .
- the identifier of the message exchange may be, for example, a name or network address of the message exchange that is configured at the message producer 104 as the destination for the message.
- the request 112 also includes the contents of the messages and an identifier of a group for the messages.
- the message producer 104 may group the messages for a particular reason. For example, the messages may be a series of operations to be performed for an ecommerce shopping cart on a web page. Grouping the messages may ensure that the messages are processed together, such as by processing the messages in a particular order.
- the message producer 104 may specify the identifier for the message group, such as an identifier used for the shopping cart. The identifier may be unique to the particular message group at least within the message queue to which the messages are added.
- the message broker 102 receives the request 112 and determines that the request 112 is directed to the identifier of the first message exchange 108 a . In response to the determination, the message broker 102 provides the request 112 to the first message exchange 108 a.
- the message broker 102 uses a standard message queuing protocol, such as the Advanced Message Queuing Protocol, to communicate the messages between the message producer 104 and the message consumers 106 a - c .
- the message producer 104 and the message broker 102 may use an existing portion of a message header in the protocol to store the message group identifier for the messages.
- the location for storing the message group identifier within the header of the request 112 may be preconfigured at the message broker 102 and/or the message producer 104 prior to the message producer 104 sending the request 112 to the message broker 102 .
- the message consumers 106 a - c may receive and process messages from the message queues 110 a - c without knowledge of or access to the message group identifier or the portion of the message header that stores the message group identifier.
- Each of the message exchanges 108 a - c at the message broker 102 is bound to one or more of the message queues 110 a - c .
- the message producer 104 may specify that the first message exchange 108 a is bound to the first message queue 110 a .
- one of the message consumers 106 a - c may specify that the first message exchange 108 a is bound to the first message queue 110 a.
- the first message exchange 108 a determines that the request 112 includes the message group identifier.
- the message broker 102 may determine that the request 112 includes the message group identifier and provide the message group identifier to the first message exchange 108 a .
- the first message exchange 108 a determines if a message group for the message group identifier already exists in the first message queue 110 a . If the message group does not yet exist, then the first message exchange 108 a automatically creates (e.g., without user interaction or involvement) the message group in the first message queue 110 a and adds the messages from the request 112 to the created message group. If the message group already exists, then the first message exchange 108 a adds the messages from the request 112 to the existing message group that has the same message group identifier as the request 112 .
- the message producer 104 may send further requests to the message broker 102 , directed to the first message exchange 108 a , that add messages to the message group in the first message queue 110 a .
- the additional messages may include the same message group identifier as in the request 112 , another message group identifier, or no message group identifier.
- the message broker 102 and the first message exchange 108 a may process the further requests as described above with respect to the request 112 (e.g., a new message group identifier may result in a new message group being created).
- One or more of the message consumers 106 a - c listen to the first message queue 110 a for messages.
- the first message consumer 106 a may check the first message queue 110 a after the messages from the request 112 are added to the first message queue 110 a .
- the message broker 102 and/or the message exchange 108 a remove one or more of the messages from the first message queue 110 a and provide the messages to the first message consumer 106 a .
- the number of messages in a batch provided to a message consumer by the message broker 102 and/or the message exchanges 108 a - c may be configured at the message broker 102 .
- the number of messages in a batch may be configured on a per message queue basis.
- the batch of messages provided to the first message consumer 106 a may belong to the message group from the request 112 .
- the message broker 102 and/or the message exchange 108 a may ensure that the messages from the group are processed in a particular order, such as the order in which the messages were added to the first message queue 110 a or an order specified for the messages in the request 112 .
- the other message consumers 106 b - c may check the first message queue 110 a for messages after the first message consumer 106 a receives the messages from the group.
- the message broker 102 and/or the message exchange 108 a may wait to provide messages from the same group as was provided to the first message consumer 106 a until the message broker 102 and/or the message exchange 108 a receive acknowledgment from the first message consumer 106 a that the first message consumer 106 a has completed processing the messages provided.
- the message broker 102 and/or the message exchange 108 a may indicate to the other message consumers 106 b - c that no messages from the group are ready to be processed even though there are messages for the group on the first message queue 110 a .
- the message broker 102 and/or the message exchange 108 a may provide messages from the first message queue 110 a that belong to another message group that has received acknowledgment for any previously provided messages or messages that do not belong to a message group.
- the message broker 102 and/or the message exchange 108 a may provide additional messages from the group to the message consumers 106 a - c . If the message broker 102 and/or the message exchange 108 a provide the last message from the group to a message consumer, then the message broker 102 and/or the message exchange 108 a automatically remove the message group from the first message queue 110 a . In some implementations, the message broker 102 and/or the message exchange 108 a wait until acknowledgment is received from the message consumer that the last message was processed before removing the message group.
- the message broker 102 and/or the message exchange 108 a may assign the last message to another message consumer.
- the message broker 102 may be implemented as part of an ecommerce website that provides a virtual shopping cart on a web page.
- a user at a client computing device may make inputs using the web page that add and remove items to and from the virtual shopping cart.
- the code for the web page at the client computing device and any server-side code that communicates with the web page may represent the message producer 104 .
- the message producer 104 may enqueque a message for each shopping cart operation on a queue, such as the first message queue 110 a .
- the message producer 104 may group the messages for the operations together by assigning a particular group identifier to each of the messages, such as a shopping cart identifier from a web browser cookie. Grouping the operations together instructs the message broker 102 and/or the message exchange 108 a to process the messages together, such as by ensuring that the messages are processed in order.
- the shopping cart operations in the messages on the first message queue 110 a may be processed by more than one of the message consumers 106 a - c .
- the message broker 102 and/or the message exchange 108 a ensure that the operations within the message group are processed in order so that the operation to add an item to the shopping cart will be followed by the operation to remove the item even if separate message consumers process the operations. While this example is described with respect to a combination of a client device and a server device over a network, the message producer 104 , the message broker 102 , and the message consumers 106 a - c may all be implemented at a client device or a server device.
- FIG. 2 is a flow chart that shows an example of a process 200 for dynamically provisioning groups of messages in a message queue.
- the process 200 may be performed, for example, by a messaging system such as the system 100 including the message producer 104 , the message broker 102 , and the message exchanges 108 a - c of FIG. 1 .
- a messaging system such as the system 100 including the message producer 104 , the message broker 102 , and the message exchanges 108 a - c of FIG. 1 .
- the description that follows uses the messaging system as an example for describing the process 200 . However, another system, or combination of systems, may be used to perform the process 200 .
- the process 200 begins, at step 202 , with receiving one or more first requests to add multiple messages on a message queue.
- the first requests specify a message group for the messages.
- the message queue uses the Advanced Message Queuing Protocol.
- the first requests specify the message group by providing a message group identifier for the message group in an existing field of the first requests.
- the message producer 104 may send the request 112 to the message exchange 108 a to add messages to a particular message group on the first message queue 110 a .
- the message producer 104 may specify the message group identifier for the message group in a header field of the protocol used to communicate with the first message exchange 108 a , such as the Advanced Message Queuing Protocol.
- the process 200 includes receiving a request to enable automatic creation or removal of message groups.
- the process 200 then automatically creates or removes message groups in response to receiving the request.
- the message broker 102 and/or the first message exchange 108 a may receive a request from the message producer 104 or another application that enables automatic creation or removal of message groups (e.g., for a particular message exchange or a particular message queue), such as by specifying a field within the header of the message protocol in which the message group identifier is stored.
- the process 200 includes determining whether the message group already exists on the message queue.
- the message broker 102 and/or the first message exchange 108 a may extract the message group identifier from the header field of the request 112 .
- the message broker 102 and/or the first message exchange 108 a may compare the extracted message group identifier to message group identifier information for the first message queue 110 a to determine if the message group for the extracted message group identifier already exists in the first message queue 110 a .
- the message broker 102 and/or the first message exchange 108 a may compare the extracted message group identifier to the message group identifiers of each message in the first message queue 110 a or to a list of message group identifiers from the first message queue 110 a.
- the process 200 includes automatically creating the message group on the message queue. Otherwise, if the message group already exists, then the process 200 proceeds to step 208 .
- the message broker 102 and/or the first message exchange 108 a determine that the message group for the request 112 does not already exist for the first message queue 110 a , then the message broker 102 and/or the first message exchange 108 a create the message group.
- Creating the message group may include, for example, creating memory structures used for handling requests from message producers to enqueue messages and from message consumers to dequeue messages for the message group.
- the message broker 102 and/or the first message exchange 108 a may store information in the memory structures that is used to ensure that the messages from the message group are processed in order.
- the process 200 includes adding the messages to the message group on the message queue.
- the message broker 102 and/or the first message exchange 108 a may add the messages from the request 112 to the specified message group on the first message queue 110 a , such as by storing the message group identifier with the message on the message queue or by storing the message in a portion of the message queue designated for the specified message group.
- the process 200 includes receiving one or more second requests to remove the messages from the message queue.
- the second requests do not specify the message group.
- the message broker 102 and/or the first message exchange 108 a may receive a request from the message consumer 106 a to dequeue messages from the first message queue 110 a.
- the process 200 includes removing the messages from the message group on the message queue.
- the message broker 102 and/or the first message exchange 108 a may remove messages from the first message queue 110 a that belong to the message group and provide the messages to the first message consumer 106 a in response to a request for messages from the first message consumer 106 a .
- the process 200 may include removing the messages in order within the message group and/or ensuring that the removed messages are processed in order.
- the process 200 includes determining whether the message group still has any messages. For example, upon dequeuing messages that belong to a message group, the message broker 102 and/or the first message exchange 108 a may compare the message group identifier of the dequeued messages to the message group identifiers of the messages that remain in the first message queue 110 a to determine if any of the messages that remain have the same message group identifier as the dequeued messages. Alternatively, the message broker 102 and/or the first message exchange 108 a may keep a count or other accounting of the number of messages on the first message queue 110 a for each message group. The message broker 102 and/or the first message exchange 108 a may then increment the count for a group as messages are added to the group and decrement the count as messages are removed from the group.
- the process 200 includes automatically removing the message group from the message queue in response to determining that the message group no longer has any messages. Otherwise, if the message group still has messages, then the process 200 may return to a previous step, such as step 210 .
- the message broker 102 and/or the first message exchange 108 a may determine that no more messages exist for a particular message group. The message broker 102 and/or the first message exchange 108 a may then remove or free up the memory structures that were created to process message requests for the message group.
- FIG. 3 is a schematic diagram that shows an example of a machine in the form of a computer system 300 .
- the computer system 300 executes one or more sets of instructions 326 that cause the machine to perform any one or more of the methodologies discussed herein.
- the machine may operate in the capacity of a server or a client machine in client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
- the machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- PDA personal digital assistant
- the computer system 300 includes a processor 302 , a main memory 304 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 306 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 316 , which communicate with each other via a bus 308 .
- main memory 304 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- RDRAM Rambus DRAM
- static memory 306 e.g., flash memory, static random access memory (SRAM), etc.
- SRAM static random access memory
- the processor 302 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processor 302 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets.
- the processor 302 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like.
- the processor 302 is configured to execute instructions of the message producer 104 , the message broker 102 , and/or the message consumers 106 a - c for performing the operations and steps discussed herein.
- the computer system 300 may further include a network interface device 322 that provides communication with other machines over a network 318 , such as a local area network (LAN), an intranet, an extranet, or the Internet.
- the computer system 300 also may include a display device 310 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 312 (e.g., a keyboard), a cursor control device 314 (e.g., a mouse), and a signal generation device 320 (e.g., a speaker).
- a display device 310 e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)
- an alphanumeric input device 312 e.g., a keyboard
- a cursor control device 314 e.g., a mouse
- a signal generation device 320 e.g., a speaker
- the data storage device 316 may include a computer-readable storage medium 324 on which is stored the sets of instructions 326 of the message producer 104 , the message broker 102 , and/or the message consumers 106 a - c embodying any one or more of the methodologies or functions described herein.
- the sets of instructions 326 of the message producer 104 , the message broker 102 , and/or the message consumers 106 a - c may also reside, completely or at least partially, within the main memory 304 and/or within the processor 302 during execution thereof by the computer system 300 , the main memory 304 and the processor 302 also constituting computer-readable storage media.
- the sets of instructions 326 may further be transmitted or received over the network 318 via the network interface device 322 .
- While the example of the computer-readable storage medium 324 is shown as a single medium, the term “computer-readable storage medium” can include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the sets of instructions 326 .
- the term “computer-readable storage medium” can include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure.
- the term “computer-readable storage medium” can include, but not be limited to, solid-state memories, optical media, and magnetic media.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- This specification relates to dynamically provisioning groups of messages in a message queue.
- In computing systems, message queues are often used for inter-process communication, for inter-thread communication within the same process, and for communication between processes at separate computing systems. A message queue is a way to pass control or content from one process or thread to another. Generally, a sender that places a message on a message queue does not need to interact with the message queue at the same time as a receiver that takes the message off of the message queue. Messages placed onto the queue are stored until the recipient retrieves them.
- In a typical message queue system, a system administrator installs and configures message queue management software, such as a message queue broker. The system administrator uses the message queue broker to define a message queue, which may include defining a name for the message queue. Receiver applications may then register software routines that listen for messages placed onto the message queue. Sender applications may connect to the message queue and transfer messages onto it. The message queue broker stores the messages until receiver applications connect and then call registered software routines to retrieve messages from the message queue. The receiver applications then process the retrieved messages.
-
FIG. 1 is a schematic diagram that shows an example of a system for dynamically provisioning groups of messages in a message queue. -
FIG. 2 is flow chart that shows an example of a process for dynamically provisioning groups of messages in a message queue. -
FIG. 3 is a schematic diagram that shows an example of a computing system. - This document describes messaging systems and messaging techniques for dynamically provisioning groups of messages in a message queue. The systems and techniques automatically create and/or remove message groups on a message queue as messages are added to and/or removed from the message queue, respectively. In some implementations, a message producer may add messages to a particular message group on a message queue using an identifier of the message group and a message consumer may remove messages from the message group without specifying the identifier of the message group. This may provide the advantage of allowing a message consumer to interoperate with the messaging system even though the message consumer may not have access to or knowledge of identifiers for the message groups. In addition, a message broker and/or message exchanges may participate in the messaging system without pre-existing (e.g., before a message being added to a message group is received) access to or knowledge of message group identifiers to be used by message producers in the messaging system. Furthermore, a message exchange that assigns messages from the message group to the message consumer may provide the advantage of ensuring consistency of message processing within the message group (e.g., ensuring that messages are processed in a particular order) without requiring configuration of the message group at the message exchange and/or the message queue.
-
FIG. 1 is a schematic diagram that shows an example of asystem 100 for dynamically provisioning groups of messages in a message queue. Thesystem 100 includes amessage broker 102 in communication with at least onemessage producer 104 and one or more message consumers 106 a-c. Themessage broker 102, themessage producer 104, and the message consumers 106 a-c are applications that are each in operation at a computing device. Themessage broker 102, themessage producer 104, and the message consumers 106 a-c may be in operation at the same computing device. Alternatively, one or more of themessage broker 102, themessage producer 104, and the message consumers 106 a-c may be in operation at separate computing devices. In the case of separate computing devices, one or more of themessage broker 102, themessage producer 104, and the message consumers 106 a-c may be in communication over a network, such as a local network or the Internet. In some implementations, one or more of themessage broker 102, themessage producer 104, and the message consumers 106 a-c may be in operation within a virtual machine at a computing device. - The
message broker 102 manages one or more message exchanges 108 a-c. The messages exchanges 108 a-c can be part of themessage broker 102 or components separate from themessage broker 102. Themessage broker 102 and the message exchanges 108 a-c may represent a messaging system that implements various aspects of the present disclosure. The message exchanges 108 a-c add messages to and remove messages from one or more message queues 110 a-c. For example, themessage producer 104 may send arequest 112 to themessage broker 102 to add one or more messages to a message queue. Therequest 112 includes an identifier of a message exchange, such as thefirst message exchange 108 a, to process therequest 112. The identifier of the message exchange may be, for example, a name or network address of the message exchange that is configured at themessage producer 104 as the destination for the message. - The
request 112 also includes the contents of the messages and an identifier of a group for the messages. Themessage producer 104 may group the messages for a particular reason. For example, the messages may be a series of operations to be performed for an ecommerce shopping cart on a web page. Grouping the messages may ensure that the messages are processed together, such as by processing the messages in a particular order. Themessage producer 104 may specify the identifier for the message group, such as an identifier used for the shopping cart. The identifier may be unique to the particular message group at least within the message queue to which the messages are added. Themessage broker 102 receives therequest 112 and determines that therequest 112 is directed to the identifier of thefirst message exchange 108 a. In response to the determination, themessage broker 102 provides therequest 112 to thefirst message exchange 108 a. - In some implementations, the
message broker 102 uses a standard message queuing protocol, such as the Advanced Message Queuing Protocol, to communicate the messages between themessage producer 104 and the message consumers 106 a-c. In addition, themessage producer 104 and themessage broker 102 may use an existing portion of a message header in the protocol to store the message group identifier for the messages. For example, the location for storing the message group identifier within the header of therequest 112 may be preconfigured at themessage broker 102 and/or themessage producer 104 prior to themessage producer 104 sending therequest 112 to themessage broker 102. In some implementations, the message consumers 106 a-c may receive and process messages from the message queues 110 a-c without knowledge of or access to the message group identifier or the portion of the message header that stores the message group identifier. - Each of the message exchanges 108 a-c at the
message broker 102 is bound to one or more of the message queues 110 a-c. For example, during creation of thefirst message queue 110 a, themessage producer 104 may specify that thefirst message exchange 108 a is bound to thefirst message queue 110 a. Alternatively, one of the message consumers 106 a-c may specify that thefirst message exchange 108 a is bound to thefirst message queue 110 a. - Accordingly, upon receiving the
request 112, thefirst message exchange 108 a determines that therequest 112 includes the message group identifier. Alternatively, themessage broker 102 may determine that therequest 112 includes the message group identifier and provide the message group identifier to thefirst message exchange 108 a. In response, thefirst message exchange 108 a determines if a message group for the message group identifier already exists in thefirst message queue 110 a. If the message group does not yet exist, then thefirst message exchange 108 a automatically creates (e.g., without user interaction or involvement) the message group in thefirst message queue 110 a and adds the messages from therequest 112 to the created message group. If the message group already exists, then the first message exchange 108 a adds the messages from therequest 112 to the existing message group that has the same message group identifier as therequest 112. - The
message producer 104, or another message producer, may send further requests to themessage broker 102, directed to thefirst message exchange 108 a, that add messages to the message group in thefirst message queue 110 a. The additional messages may include the same message group identifier as in therequest 112, another message group identifier, or no message group identifier. Themessage broker 102 and the first message exchange 108 a may process the further requests as described above with respect to the request 112 (e.g., a new message group identifier may result in a new message group being created). - One or more of the message consumers 106 a-c listen to the
first message queue 110 a for messages. For example, thefirst message consumer 106 a may check thefirst message queue 110 a after the messages from therequest 112 are added to thefirst message queue 110 a. Themessage broker 102 and/or the message exchange 108 a remove one or more of the messages from thefirst message queue 110 a and provide the messages to thefirst message consumer 106 a. In some implementations, the number of messages in a batch provided to a message consumer by themessage broker 102 and/or the message exchanges 108 a-c may be configured at themessage broker 102. For example, the number of messages in a batch may be configured on a per message queue basis. The batch of messages provided to thefirst message consumer 106 a may belong to the message group from therequest 112. - The
message broker 102 and/or themessage exchange 108 a may ensure that the messages from the group are processed in a particular order, such as the order in which the messages were added to thefirst message queue 110 a or an order specified for the messages in therequest 112. For example, theother message consumers 106 b-c may check thefirst message queue 110 a for messages after thefirst message consumer 106 a receives the messages from the group. Themessage broker 102 and/or themessage exchange 108 a may wait to provide messages from the same group as was provided to thefirst message consumer 106 a until themessage broker 102 and/or themessage exchange 108 a receive acknowledgment from thefirst message consumer 106 a that thefirst message consumer 106 a has completed processing the messages provided. For example, themessage broker 102 and/or themessage exchange 108 a may indicate to theother message consumers 106 b-c that no messages from the group are ready to be processed even though there are messages for the group on thefirst message queue 110 a. However, themessage broker 102 and/or themessage exchange 108 a may provide messages from thefirst message queue 110 a that belong to another message group that has received acknowledgment for any previously provided messages or messages that do not belong to a message group. - Once the
message broker 102 and/or themessage exchange 108 a receive acknowledgment from thefirst message consumer 106 a that the messages have been processed, then themessage broker 102 and/or themessage exchange 108 a may provide additional messages from the group to the message consumers 106 a-c. If themessage broker 102 and/or themessage exchange 108 a provide the last message from the group to a message consumer, then themessage broker 102 and/or themessage exchange 108 a automatically remove the message group from thefirst message queue 110 a. In some implementations, themessage broker 102 and/or themessage exchange 108 a wait until acknowledgment is received from the message consumer that the last message was processed before removing the message group. If themessage broker 102 and/or themessage exchange 108 a do not receive an acknowledgment in a predetermined amount of time or if themessage broker 102 and/or themessage exchange 108 a receive a non-acknowledgment indicating that the last message could not be processed, then themessage broker 102 and/or themessage exchange 108 a may assign the last message to another message consumer. - As previously described, the
message broker 102 may be implemented as part of an ecommerce website that provides a virtual shopping cart on a web page. A user at a client computing device may make inputs using the web page that add and remove items to and from the virtual shopping cart. The code for the web page at the client computing device and any server-side code that communicates with the web page may represent themessage producer 104. Themessage producer 104 may enqueque a message for each shopping cart operation on a queue, such as thefirst message queue 110 a. Themessage producer 104 may group the messages for the operations together by assigning a particular group identifier to each of the messages, such as a shopping cart identifier from a web browser cookie. Grouping the operations together instructs themessage broker 102 and/or themessage exchange 108 a to process the messages together, such as by ensuring that the messages are processed in order. - The shopping cart operations in the messages on the
first message queue 110 a may be processed by more than one of the message consumers 106 a-c. Themessage broker 102 and/or themessage exchange 108 a ensure that the operations within the message group are processed in order so that the operation to add an item to the shopping cart will be followed by the operation to remove the item even if separate message consumers process the operations. While this example is described with respect to a combination of a client device and a server device over a network, themessage producer 104, themessage broker 102, and the message consumers 106 a-c may all be implemented at a client device or a server device. -
FIG. 2 is a flow chart that shows an example of aprocess 200 for dynamically provisioning groups of messages in a message queue. Theprocess 200 may be performed, for example, by a messaging system such as thesystem 100 including themessage producer 104, themessage broker 102, and the message exchanges 108 a-c ofFIG. 1 . For clarity of presentation, the description that follows uses the messaging system as an example for describing theprocess 200. However, another system, or combination of systems, may be used to perform theprocess 200. - The
process 200 begins, atstep 202, with receiving one or more first requests to add multiple messages on a message queue. The first requests specify a message group for the messages. In some implementations, the message queue uses the Advanced Message Queuing Protocol. In some implementations, the first requests specify the message group by providing a message group identifier for the message group in an existing field of the first requests. For example, themessage producer 104 may send therequest 112 to themessage exchange 108 a to add messages to a particular message group on thefirst message queue 110 a. Themessage producer 104 may specify the message group identifier for the message group in a header field of the protocol used to communicate with thefirst message exchange 108 a, such as the Advanced Message Queuing Protocol. - In some implementations, the
process 200 includes receiving a request to enable automatic creation or removal of message groups. Theprocess 200 then automatically creates or removes message groups in response to receiving the request. For example, themessage broker 102 and/or thefirst message exchange 108 a may receive a request from themessage producer 104 or another application that enables automatic creation or removal of message groups (e.g., for a particular message exchange or a particular message queue), such as by specifying a field within the header of the message protocol in which the message group identifier is stored. - At
step 204, in response to receiving the first requests, theprocess 200 includes determining whether the message group already exists on the message queue. For example, themessage broker 102 and/or thefirst message exchange 108 a may extract the message group identifier from the header field of therequest 112. Themessage broker 102 and/or thefirst message exchange 108 a may compare the extracted message group identifier to message group identifier information for thefirst message queue 110 a to determine if the message group for the extracted message group identifier already exists in thefirst message queue 110 a. For example, themessage broker 102 and/or thefirst message exchange 108 a may compare the extracted message group identifier to the message group identifiers of each message in thefirst message queue 110 a or to a list of message group identifiers from thefirst message queue 110 a. - At
step 206, in response to determining that the message group does not already exist on the message queue, theprocess 200 includes automatically creating the message group on the message queue. Otherwise, if the message group already exists, then theprocess 200 proceeds to step 208. For example, if themessage broker 102 and/or thefirst message exchange 108 a determine that the message group for therequest 112 does not already exist for thefirst message queue 110 a, then themessage broker 102 and/or thefirst message exchange 108 a create the message group. Creating the message group may include, for example, creating memory structures used for handling requests from message producers to enqueue messages and from message consumers to dequeue messages for the message group. Themessage broker 102 and/or thefirst message exchange 108 a may store information in the memory structures that is used to ensure that the messages from the message group are processed in order. - At
step 208, theprocess 200 includes adding the messages to the message group on the message queue. For example, themessage broker 102 and/or thefirst message exchange 108 a may add the messages from therequest 112 to the specified message group on thefirst message queue 110 a, such as by storing the message group identifier with the message on the message queue or by storing the message in a portion of the message queue designated for the specified message group. - At
step 210, theprocess 200 includes receiving one or more second requests to remove the messages from the message queue. In some implementations, the second requests do not specify the message group. For example, themessage broker 102 and/or thefirst message exchange 108 a may receive a request from themessage consumer 106 a to dequeue messages from thefirst message queue 110 a. - At
step 212, theprocess 200 includes removing the messages from the message group on the message queue. For example, themessage broker 102 and/or thefirst message exchange 108 a may remove messages from thefirst message queue 110 a that belong to the message group and provide the messages to thefirst message consumer 106 a in response to a request for messages from thefirst message consumer 106 a. Theprocess 200 may include removing the messages in order within the message group and/or ensuring that the removed messages are processed in order. - At
step 214, theprocess 200 includes determining whether the message group still has any messages. For example, upon dequeuing messages that belong to a message group, themessage broker 102 and/or thefirst message exchange 108 a may compare the message group identifier of the dequeued messages to the message group identifiers of the messages that remain in thefirst message queue 110 a to determine if any of the messages that remain have the same message group identifier as the dequeued messages. Alternatively, themessage broker 102 and/or thefirst message exchange 108 a may keep a count or other accounting of the number of messages on thefirst message queue 110 a for each message group. Themessage broker 102 and/or thefirst message exchange 108 a may then increment the count for a group as messages are added to the group and decrement the count as messages are removed from the group. - At
step 216, theprocess 200 includes automatically removing the message group from the message queue in response to determining that the message group no longer has any messages. Otherwise, if the message group still has messages, then theprocess 200 may return to a previous step, such asstep 210. For example, themessage broker 102 and/or thefirst message exchange 108 a may determine that no more messages exist for a particular message group. Themessage broker 102 and/or thefirst message exchange 108 a may then remove or free up the memory structures that were created to process message requests for the message group. -
FIG. 3 is a schematic diagram that shows an example of a machine in the form of acomputer system 300. Thecomputer system 300 executes one or more sets ofinstructions 326 that cause the machine to perform any one or more of the methodologies discussed herein. The machine may operate in the capacity of a server or a client machine in client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute the sets ofinstructions 326 to perform any one or more of the methodologies discussed herein. - The
computer system 300 includes aprocessor 302, a main memory 304 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 306 (e.g., flash memory, static random access memory (SRAM), etc.), and adata storage device 316, which communicate with each other via abus 308. - The
processor 302 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, theprocessor 302 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. Theprocessor 302 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Theprocessor 302 is configured to execute instructions of themessage producer 104, themessage broker 102, and/or the message consumers 106 a-c for performing the operations and steps discussed herein. - The
computer system 300 may further include anetwork interface device 322 that provides communication with other machines over anetwork 318, such as a local area network (LAN), an intranet, an extranet, or the Internet. Thecomputer system 300 also may include a display device 310 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 312 (e.g., a keyboard), a cursor control device 314 (e.g., a mouse), and a signal generation device 320 (e.g., a speaker). - The
data storage device 316 may include a computer-readable storage medium 324 on which is stored the sets ofinstructions 326 of themessage producer 104, themessage broker 102, and/or the message consumers 106 a-c embodying any one or more of the methodologies or functions described herein. The sets ofinstructions 326 of themessage producer 104, themessage broker 102, and/or the message consumers 106 a-c may also reside, completely or at least partially, within themain memory 304 and/or within theprocessor 302 during execution thereof by thecomputer system 300, themain memory 304 and theprocessor 302 also constituting computer-readable storage media. The sets ofinstructions 326 may further be transmitted or received over thenetwork 318 via thenetwork interface device 322. - While the example of the computer-
readable storage medium 324 is shown as a single medium, the term “computer-readable storage medium” can include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the sets ofinstructions 326. The term “computer-readable storage medium” can include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure. The term “computer-readable storage medium” can include, but not be limited to, solid-state memories, optical media, and magnetic media. - In the foregoing description, numerous details are set forth. It will be apparent, however, to one of ordinary skill in the art having the benefit of this disclosure, that the present disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present disclosure.
- Some portions of the detailed description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
- It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, it is appreciated that throughout the description, discussions utilizing terms such as “identifying,” “providing,” “enabling,” “finding,” “selecting” or the like, refer to the actions and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system memories or registers into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
- The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including a floppy disk, an optical disk, a compact disc read-only memory (CD-ROM), a magnetic-optical disk, a read-only memory (ROM), a random access memory (RAM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a magnetic or optical card, or any type of media suitable for storing electronic instructions.
- The words “example” or “exemplary” are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example’ or “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the words “example” or “exemplary” is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from context, “X includes A or B” is intended to mean any of the natural inclusive permutations. That is, if X includes A; X includes B; or X includes both A and B, then “X includes A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. Moreover, use of the term “an embodiment” or “one embodiment” or “an implementation” or “one implementation” throughout is not intended to mean the same embodiment or implementation unless described as such.
- It is to be understood that the above description is intended to be illustrative, and not restrictive. Other implementations will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the disclosure should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/756,054 US8806507B1 (en) | 2013-01-31 | 2013-01-31 | Dynamic provisioning of message groups |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/756,054 US8806507B1 (en) | 2013-01-31 | 2013-01-31 | Dynamic provisioning of message groups |
Publications (2)
Publication Number | Publication Date |
---|---|
US20140215492A1 true US20140215492A1 (en) | 2014-07-31 |
US8806507B1 US8806507B1 (en) | 2014-08-12 |
Family
ID=51224531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/756,054 Active 2033-02-11 US8806507B1 (en) | 2013-01-31 | 2013-01-31 | Dynamic provisioning of message groups |
Country Status (1)
Country | Link |
---|---|
US (1) | US8806507B1 (en) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140366039A1 (en) * | 2013-06-07 | 2014-12-11 | Accenture Global Services Limited | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application |
US20150227609A1 (en) * | 2014-02-13 | 2015-08-13 | Yahoo! Inc. | Automatic group formation and group detection through media recognition |
US20150381549A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Message batching in a distributed strict queue |
US20150378796A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Client control in a distributed strict queue |
US20150381413A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Geographic awareness in a distributed strict queue |
US20150381709A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Input/output management in a distributed strict queue |
US20150381514A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Multi-tiered processing using a distributed strict queue |
US20150381708A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Failure management in a distributed strict queue |
GB2530781A (en) * | 2014-10-02 | 2016-04-06 | Ibm | Processing messages for retrieval from a message queuing system |
CN108628688A (en) * | 2018-03-30 | 2018-10-09 | 阿里巴巴集团控股有限公司 | A kind of message treatment method, device and equipment |
US10423390B1 (en) * | 2015-06-04 | 2019-09-24 | The Mathworks, Inc. | Systems and methods for generating code for models having messaging semantics |
US20220150204A1 (en) * | 2020-11-12 | 2022-05-12 | Chicago Mercantile Exchange Inc. | Message ordering buffer |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298567B (en) * | 2014-10-31 | 2017-10-03 | 南京亚信软件有限公司 | A kind of system and method for ensureing Message Processing uniformity |
CN109976919A (en) * | 2017-12-28 | 2019-07-05 | 北京京东尚科信息技术有限公司 | A kind of transmission method and device of message request |
CN109408203B (en) * | 2018-11-01 | 2019-10-18 | 无锡华云数据技术服务有限公司 | A kind of implementation method, device, the computing system of queue message consistency |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030182464A1 (en) * | 2002-02-15 | 2003-09-25 | Hamilton Thomas E. | Management of message queues |
US8954994B2 (en) * | 2007-04-23 | 2015-02-10 | Oracle International Corporation | System and method for message service with unit-of-order |
WO2010040716A1 (en) * | 2008-10-10 | 2010-04-15 | International Business Machines Corporation | Queue manager and method of managing queues in an asynchronous messaging system |
US8495656B2 (en) * | 2010-10-15 | 2013-07-23 | Attivio, Inc. | Ordered processing of groups of messages |
WO2013010177A2 (en) * | 2011-07-14 | 2013-01-17 | Surfari Inc. | Online groups interacting around common content |
-
2013
- 2013-01-31 US US13/756,054 patent/US8806507B1/en active Active
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140366039A1 (en) * | 2013-06-07 | 2014-12-11 | Accenture Global Services Limited | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application |
US9262241B2 (en) * | 2013-06-07 | 2016-02-16 | Accenture Global Services Limited | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application |
US20150227609A1 (en) * | 2014-02-13 | 2015-08-13 | Yahoo! Inc. | Automatic group formation and group detection through media recognition |
US10121060B2 (en) * | 2014-02-13 | 2018-11-06 | Oath Inc. | Automatic group formation and group detection through media recognition |
US20150381514A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Multi-tiered processing using a distributed strict queue |
US9591101B2 (en) * | 2014-06-27 | 2017-03-07 | Amazon Technologies, Inc. | Message batching in a distributed strict queue |
US20150381413A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Geographic awareness in a distributed strict queue |
US20150381708A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Failure management in a distributed strict queue |
US20150378796A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Client control in a distributed strict queue |
US20150381549A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Message batching in a distributed strict queue |
US9571414B2 (en) * | 2014-06-27 | 2017-02-14 | Amazon Technologies, Inc. | Multi-tiered processing using a distributed strict queue |
US9577961B2 (en) * | 2014-06-27 | 2017-02-21 | Amazon Technologies, Inc. | Input/output management in a distributed strict queue |
US9575820B2 (en) * | 2014-06-27 | 2017-02-21 | Amazon Technologies, Inc. | Client control in a distributed strict queue |
US9577878B2 (en) * | 2014-06-27 | 2017-02-21 | Amazon Technologies, Inc. | Geographic awareness in a distributed strict queue |
US9584593B2 (en) * | 2014-06-27 | 2017-02-28 | Amazon Technologies, Inc. | Failure management in a distributed strict queue |
US20150381709A1 (en) * | 2014-06-27 | 2015-12-31 | Amazon Technologies, Inc. | Input/output management in a distributed strict queue |
US10084740B2 (en) | 2014-10-02 | 2018-09-25 | International Business Machines Corporation | Processing messages for retrieval from a message queuing system |
GB2530781A (en) * | 2014-10-02 | 2016-04-06 | Ibm | Processing messages for retrieval from a message queuing system |
US10423390B1 (en) * | 2015-06-04 | 2019-09-24 | The Mathworks, Inc. | Systems and methods for generating code for models having messaging semantics |
CN108628688A (en) * | 2018-03-30 | 2018-10-09 | 阿里巴巴集团控股有限公司 | A kind of message treatment method, device and equipment |
CN108628688B (en) * | 2018-03-30 | 2022-11-18 | 创新先进技术有限公司 | Message processing method, device and equipment |
US20220150204A1 (en) * | 2020-11-12 | 2022-05-12 | Chicago Mercantile Exchange Inc. | Message ordering buffer |
US11627099B2 (en) * | 2020-11-12 | 2023-04-11 | Chicago Mercantile Exchange Inc. | Message ordering buffer |
US20230216812A1 (en) * | 2020-11-12 | 2023-07-06 | Chicago Mercantile Exchange Inc. | Message ordering buffer |
US12095680B2 (en) * | 2020-11-12 | 2024-09-17 | Chicago Mercantile Exchange Inc. | Lane handling for message ordering buffer |
Also Published As
Publication number | Publication date |
---|---|
US8806507B1 (en) | 2014-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8806507B1 (en) | Dynamic provisioning of message groups | |
AU2012348048B2 (en) | Contextual and location awareness for device interaction | |
US8984530B2 (en) | Queued message dispatch | |
US8825750B2 (en) | Application server management system, application server management method, management apparatus, application server and computer program | |
CN103207785B (en) | The processing method of data download request, Apparatus and system | |
CN112667414A (en) | Message queue-based message consumption method and device, computer equipment and medium | |
WO2016101811A1 (en) | Information arrangement method and apparatus | |
US9674127B2 (en) | Selective message republishing to subscriber subsets in a publish-subscribe model | |
CN107589990B (en) | Data communication method and system based on thread pool | |
US20130066980A1 (en) | Mapping raw event data to customized notifications | |
CN110278161B (en) | Message distribution method, device and system based on user mode protocol stack | |
CN107276970B (en) | Unbinding and binding method and device | |
CN113259415B (en) | Network message processing method and device and network server | |
CN104965690B (en) | Data processing method and device | |
CN110928905B (en) | Data processing method and device | |
CN110753129A (en) | Message transmission method, system, device, equipment and computer readable storage medium | |
CN107688733B (en) | Service interface calling method, device, user terminal and readable storage medium | |
CN106302111B (en) | Information processing method, terminal and server | |
CN113965628B (en) | Message scheduling method, server and storage medium | |
KR20170116022A (en) | Service implementation | |
CN102685209A (en) | Method, device and facility for assisting user equipment to receive and dispatch instant message | |
CN104813610A (en) | Providing multiple content items for display on multiple devices | |
US9268621B2 (en) | Reducing latency in multicast traffic reception | |
CN104601448A (en) | Method and device for handling virtual card | |
US9894012B2 (en) | Method and system to improve network connection locality on multicore systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: RED HAT, INC., NORTH CAROLINA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ROSS, THEODORE L.;GUISTI, KENNETH A.;REEL/FRAME:029735/0187 Effective date: 20130131 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |