A message queue is an IPC mechanism where reading a message removes it from the queue (destructive read). Once a process reads a message, other processes cannot read the same message. This contrasts with shared memory where multiple processes can read the same data repeatedly (non-destructive read).