Within a connection and session, a client application produces or consumes messages. You could create multiple sessions and produce messages in one session and consume messages in another session. Creating one session for sending and another for receiving messages prevents bottlenecks and enhances performance by preventing one activity from blocking another activity. As illustrated, a client application can be both a producer and a consumer:









