1. 下载ActiveMQ地址:
简单的例子, 试试
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 回复生产者成功。。。