import javax.jms.*;
import org.jboss.mq.*;
import org.jboss.mq.server.*;
import org.jboss.mq.sm.*;
import org.jboss.mq.sm.interceptors.*;
public class AsyncMessageProcessor implements MessageListener {
private static QueueConnection connection;
private static QueueSession session;
private static QueueReceiver receiver;
public void start() {
try {
QueueConnectionFactory factory = new org.jboss.mq.SpyConnectionFactory();
connection = factory.createQueueConnection();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
receiver = session.createReceiver(destination);
receiver.setMessageListener(this);
connection.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public void stop() {
try {
if (receiver != null) {
receiver.close();
}
if (session != null) {
session.close();
}
if (connection != null) {
connection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String content = textMessage.getText();
System.out.println("Received message: " + content);
}
} catch (JMSException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
AsyncMessageProcessor processor = new AsyncMessageProcessor();
processor.start();
try {
QueueConnectionFactory factory = new org.jboss.mq.SpyConnectionFactory();
QueueConnection senderConnection = factory.createQueueConnection();
QueueSession senderSession = senderConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender sender = senderSession.createSender(senderDestination);
TextMessage message = senderSession.createTextMessage();
message.setText("Hello, JBossMQ!");
sender.send(message);
sender.close();
senderSession.close();
senderConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
processor.stop();
}
}