05-17-2005
You can go for a client-server sort of model: The server can have two message queues that are known to all client systems.
One will be a control queue - when a client comes up it will create a new message queue and send the message queue id that is obtained to the server over the control queue. The server will store the msqids-pid(of the client) pairs - where these will be used will be seen later.
The second message queue will be the data queue - this queue will be the one where all clients send their data messages. The message type here must be something unique, the pid of the client process will be perfect.
The server can read messages from the data queue in the order that they are available - msgtyp=0 can be used. The server will then send messages to all the queues that are known to it (the msqid - pid pairs stored before will be used here), except to the pid that sent the message to it. Here you can use msgtyp=1 - you will never get the pid of any client equal to 1.
In cleanup, the server will remove the control and data message queues, the clients will delete the message queues that they created.
I know that the programming part may be a bit complicated, but with an unknown number of clients connecting, I think that this would be the best way to go.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
let 3 processes a, b and c are sharing msgs using msg queues.process 'a' sending msg to 'c' and in turn 'c' send sthat msg to 'b'.if something happens to c how can 'a' and 'b' know that 'c' is not available?????? (2 Replies)
Discussion started by: sukaam
2 Replies
2. Solaris
We have message queues created from our ERP system to our tax system via an application api written by the ERP software vendor.
Occasionally when a user does not gracefully exit the ERP application, the message queue hangs. After a few months, this becomes a problem as the queues are all used... (2 Replies)
Discussion started by: MizzGail
2 Replies
3. Linux
how to check the maximun number of message queues in current linux enviornment? is there any command ? (4 Replies)
Discussion started by: princelinux
4 Replies
4. Programming
Hi,
According to my understanding..
When message queues are used, when a process post a message in the queue and if another process reads it from the queue then the queue will be empty unlike shared memory where n number of processess can access the shared memory and still the contents remain... (2 Replies)
Discussion started by: rvan
2 Replies
5. UNIX for Advanced & Expert Users
If I use sockets for IPC, and can easily distribute my applications.
UNIX Message Queues are local to the processor.
As I understand it, Message Queues still incur system call overhead, just like socket calls.
What advantage does a UNIX Message Queue provide versus a TCP or UDP Socket,... (2 Replies)
Discussion started by: zen29sky
2 Replies
6. UNIX for Advanced & Expert Users
#include <sys/ipc.h>
#include <sys/msg.h>
int main()
{
int qid;
int t;
struct msgbuf mesg;
qid=msgget(IPC_PRIVATE,IPC_CREAT);
mesg.mtype=1L;
mesg.mtext=1;
t=msgsnd(qid,&mesg,1,0);
printf("%d",t);
}
the program prints -1 as the result of msgsnd ,which means that msgsnd doesn't... (1 Reply)
Discussion started by: tolkki
1 Replies
7. UNIX for Dummies Questions & Answers
can any body provide a tutorial that explains the concept of message queues in UNIX in great detail (1 Reply)
Discussion started by: asalman.qazi
1 Replies
8. Programming
Hi,
I have searched the forums and could not find a relavant thread discussing my use case, hence the new post.
Basically am trying to pass on work to dummy worker instances from controller which will pass on work to workers (client)
To make use of host capacity, am planning to serialize... (2 Replies)
Discussion started by: matrixmadhan
2 Replies
9. Shell Programming and Scripting
i have an application installed on AIX 5.3 and i have made a script that shutdown a proccesses that exceeded 10000kb of memory usage but i have a problem with cleaning the message queues of these proccesses after shutting them down. Is there any way to clean the message queues for this particular... (8 Replies)
Discussion started by: Portabello
8 Replies
10. UNIX for Advanced & Expert Users
i have a program(C++ Code) that sends/receives information through queue's (Uses MQ)
Is there any UNIX/LINUX tool that calculates the load and performance time for the same.
If not how do i design the program that calculates the performance time.
i know that time.h can be used but it gives... (2 Replies)
Discussion started by: vkca
2 Replies
LEARN ABOUT REDHAT
qmail-queue
qmail-queue(8) System Manager's Manual qmail-queue(8)
NAME
qmail-queue - queue a mail message for delivery
SYNOPSIS
qmail-queue
DESCRIPTION
qmail-queue reads a mail message from descriptor 0. It then reads envelope information from descriptor 1. It places the message into the
outgoing queue for future delivery by qmail-send.
The envelope information is an envelope sender address followed by a list of envelope recipient addresses. The sender address is preceded
by the letter F and terminated by a 0 byte. Each recipient address is preceded by the letter T and terminated by a 0 byte. The list of
recipient addresses is terminated by an extra 0 byte. If qmail-queue sees end-of-file before the extra 0 byte, it aborts without placing
the message into the queue.
Every envelope recipient address should contain a username, an @ sign, and a fully qualified domain name.
qmail-queue always adds a Received line to the top of the message. Other than this, qmail-queue does not inspect the message and does not
enforce any restrictions on its contents. However, the recipients probably expect to see a proper header, as described in qmail-header(5).
Programs included with qmail which invoke qmail-queue will invoke the contents of $QMAILQUEUE instead, if that environment variable is set.
FILESYSTEM RESTRICTIONS
qmail-queue imposes two constraints on the queue structure: each mess subdirectory must be in the same filesystem as the pid directory; and
each todo subdirectory must be in the same filesystem as the intd directory.
EXIT CODES
qmail-queue does not print diagnostics. It exits 0 if it has successfully queued the message. It exits between 1 and 99 if it has failed
to queue the message.
All qmail-queue error codes between 11 and 40 indicate permanent errors:
11 Address too long.
31 Mail server permanently refuses to send the message to any recipients. (Not used by qmail-queue, but can be used by programs offering
the same interface.)
All other qmail-queue error codes indicate temporary errors:
51 Out of memory.
52 Timeout.
53 Write error; e.g., disk full.
54 Unable to read the message or envelope.
55 Unable to read a configuration file. (Not used by qmail-queue.)
56 Problem making a network connection from this host. (Not used by qmail-queue.)
61 Problem with the qmail home directory.
62 Problem with the queue directory.
63 Problem with queue/pid.
64 Problem with queue/mess.
65 Problem with queue/intd.
66 Problem with queue/todo.
71 Mail server temporarily refuses to send the message to any recipients. (Not used by qmail-queue.)
72 Connection to mail server timed out. (Not used by qmail-queue.)
73 Connection to mail server rejected. (Not used by qmail-queue.)
74 Connection to mail server succeeded, but communication failed. (Not used by qmail-queue.)
81 Internal bug; e.g., segmentation fault.
91 Envelope format error.
SEE ALSO
addresses(5), envelopes(5), qmail-header(5), qmail-inject(8), qmail-qmqpc(8), qmail-send(8), qmail-smtpd(8)
qmail-queue(8)