Primer:
http://gnuradio.org/doc/doxygen/page_msg_passing.html
Though GNU Radio is 'stream' based, lots of communication systems have well-defined concepts of packet and frame.
For those cases, it is sometimes useful to use message passing rather than stream. Say, publishing and subscribing a message seems easier and more convenient than passing a stream with a tag 'packet_length' and building a state machine.
But then one question comes up. 'Why is stream used more frequently and widely than message passing?' Though I am not sure if it is correct, but I can guess reasons: maximum length limitation of message, scheduler, memory and handling overhead, compatibility with the built-in and existing blocks.
A link for primer doesn't tell some pros and cons about stream and message. I wonder how far I can use message passing. To tell straight, I can build all my own OOT blocks using message passing and unpack it into stream to feed to USRP sink. But I think there are some reasons for not doing this.
Regards,
Jeon.