Как видно из приведенного ниже примера, клиент может быть и производителем, и потребителем.Это действительно зависит от того, как вы это настроите.Обычно клиент является либо потребителем, либо производителем, если вы делаете асинхронный обмен сообщениями.Если вы выполняете запрос / ответ, он будет выполнять оба действия, и вы будете использовать корреляционный идентификатор или идентификатор сообщения для отслеживания ваших запросов и ответов.Пример ниже для асинхронной связи.
myConnFactory = new com.sun.messaging.ConnectionFactory();
Connection myConn = myConnFactory.createConnection();
//Create a session within the connection.
Session mySess = myConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
myQueue = new com.sun.messaging.Queue("world");
//Create a message producer.
MessageProducer myMsgProducer = mySess.createProducer(myQueue);
//Create a message consumer. (Use if going to read from the queue)
MessageConsumer myMsgConsumer = mySess.createConsumer(myQueue);
//Start the Connection
myConn.start();
//Create and send a message to the queue.
TextMessage myTextMsg = mySess.createTextMessage();
myTextMsg.setText("Hello World");
System.out.println("Sending Message: " + myTextMsg.getText());
myMsgProducer.send(myTextMsg);
// The rest of the code is for reading from a queue - optional
//Receive a message from the queue.
Message msg = myMsgConsumer.receive();
//Retreive the contents of the message.
if (msg instanceof TextMessage) {
TextMessage txtMsg = (TextMessage) msg;
System.out.println("Read Message: " + txtMsg.getText());
}