1. 下载ActiveMQ地址:http://activemq.apache.org/download.html
简单的例子, 试试
2. Sender.java: 如何接受回复的消息
3. receiver.java: 这个类用于消费消息 ,使用ActiveMQ服务
public class Sender {
public static void main(String[] args) throws JMSException {
// 注意三个参数 分别是 用户名 密码 (这个可以修改) 61616 代表端口号
ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
//消息发送到这个queue
Queue queue = new ActiveMQQueue("testQueue2");
//消息回复到这个queue
Queue replyQueue = new ActiveMQQueue("replyQueue");
//创建会话 false表示可以回送消息
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建一个消息 :
Message message = session.createTextMessage(" I am JMS..");
//并设置它的JMSReplyTo为replyQueue
//通过下面一句代码指定回复的消息传到哪个队列。
message.setJMSReplyTo(replyQueue);
//创建生产者
MessageProducer producer = session.createProducer(queue);
//设置消息的保存模式:
producer.setDeliveryMode( DeliveryMode.PERSISTENT );
//发送消息;
producer.send(message);
System.out.println( "生产消息已发送成功。");
//创建一个消费者: 来获取接收者回复的消息
MessageConsumer consumer = session.createConsumer(replyQueue);
consumer.setMessageListener( new MessageListener(){
@Override
public void onMessage(Message message) {
TextMessage tm = (TextMessage) message;
try {
System.out.println( "收到的回复: " + tm.getText() );
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}
}
public class Receiver {
public static void main(String[] args) throws JMSException {
ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
//创建会话 false表示可以回送消息
final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建一个目的地 它用来接收消息:
Destination destination = session.createQueue("testQueue2");
//创建一个消费者: 来获取接收者回复的消息
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener( new MessageListener(){
@Override
public void onMessage(Message message) {
TextMessage tm = (TextMessage) message;
try {
System.out.println( "接收到的生产消息: " + tm.getText() );
System.out.println( "回复的目标地址: " + message.getJMSReplyTo() );
//准备发送一个回复消息:
//创建一个新的生产者来发送回复消息至接收回复消息的队列:
MessageProducer producer = session.createProducer( message.getJMSReplyTo() );
producer.send( session.createTextMessage(" Hello, I am receiver ..") );
System.out.println( "\n 回复生产者成功。。。");
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}
}
运行结果:
对于send.java:
生产消息已发送成功。
收到的回复: Hello, I am receiver ..
对于receiver.java:
接收到的生产消息: I am JMS..
回复的目标地址: queue://replyQueue
回复生产者成功。。。