A message group is required to send and receive a message from a FIFO queue. A standard queue guarantees at-least once delivery of a message. There are scenarios when a message could be received by a consumer more than once. It is recommended that applications using a Standard queue build their applications to be idempotent. A FIFO queue, on the other hand, guarantees exactly-once message delivery. FIFO queues also provide different ways to configure message de-duplication.
Standard queues have no restriction on the amount of messages that can be produced or consumed, thus providing a nearly unlimited throughput.
FIFO queues, however, have strict thresholds on the throughput. FIFO queues can process at most messages per second with batching or messages per second without batching. The overhead of supporting exactly-once and in-order messaging impacts the performance of FIFO queues.
Asked 11 years, 2 months ago. Active 9 years, 11 months ago. Viewed 21k times. What is the difference between message queues and a pipe in Linux? Add a comment. Active Oldest Votes. Off the top of my head and assuming you talk about posix message queues not the SysV ones : Pipes aren't limited in size, message queues are. Pipes, once closed, require some amount of cooperation on both sides to reestablish them, message queues can be closed and reopened on either side without the coorporation of the other side.
Pipes are flat, much like a stream, to impose a message structure you would have to implement a protocol on both sides, message queues are message oriented already, no care has to be taken to get, say, the fifth message in the queue.
But I have a small doubt "pipes once closed requires some kind of support on both sides", you mean to highlight the point that pipes are not kernel persistent and message queus are And exactly what kind of suport is required to reesatblish the pipe once closed?
In other words It tries best to deliver a message in the same order as they are sent. FIFO queues on the other hand, offer first-in-first-out delivery.
The order in which messages are sent and received is strictly preserved as you can see below. Well explained. Good Article…. Active 7 years, 3 months ago. Viewed 28k times. I think pipes are unidirectional but message queues aren't. What are the other differences you can think of from design or usage or other perspectives? I think in general they are the same thing. Message queues tend to make sure that the data arrives to the recipient. Pipes are used to send chunks of strings and binary data, while queues are used to send messages, but again, this can be implementation dependent.
People like to reinvent the wheel if we are talking about messaging. Some of the terms have more than 5 different names Check this also quora.
Add a comment. Active Oldest Votes. If you don't read the entire data, the rest is lost. For example: send a 20 byte message, but the receiver reads 10 bytes. The remaining 10 bytes are lost.
0コメント