测试发送和接受消息

发送消息代码:
package com.yzk.test.message;

import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class SendMessage {
 private static final String url ="tcp://localhost:61616";
 private static final String QUEUE_NAME ="choice.queue";
 protected String expectedBody = "hello world!";
 public void sendMessage() throws JMSException{
  Connection connection =null;
  try{
// ConnectionFactory :连接工厂,JMS 用它创建连接 
   ActiveMQConnectionFactory connectionFactory =new ActiveMQConnectionFactory(url);
//JMS 客户端到JMS Provider 的连接 
   connection = (Connection)connectionFactory.createConnection();
   connection.start();
// Session: 一个发送或接收消息的线程 
   Session session = (Session)connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Destination :消息的目的地;消息发送给谁. 
// 获取session注意参数值QUEUE_NAME是Query的名字 
   Destination destination = session.createQueue(QUEUE_NAME);
// MessageProducer:消息生产者 
   MessageProducer producer = session.createProducer(destination);
 //创建一条文本消息 
   TextMessage message = session.createTextMessage(expectedBody);
   message.setStringProperty("headname", "remoteB");
//通过消息生产者发出消息 
   producer.send(message);    
  }catch(Exception e){
   e.printStackTrace();
  }
 }
 
 public static void main(String[] args){
  SendMessage sndMsg = new SendMessage();
  try{
   sndMsg.sendMessage();
  }catch(Exception ex){
   System.out.println(ex.toString());
  }
 }
}




消息的接受者:
package com.yzk.test.message;

import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class ReceiveMessage {
	 private static final String url = "tcp://localhost:61616";
	 private static final String QUEUE_NAME = "choice.queue";
	 public void receiveMessage() {
	  Connection connection = null;
	  try {
	   try {
 // ConnectionFactory :连接工厂,JMS 用它创建连接 
	    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
 //JMS 客户端到JMS Provider 的连接 
	    connection = connectionFactory.createConnection();
	   } catch (Exception e) {
	                System.out.println(e.toString());
	   }
	   connection.start();
// Session: 一个发送或接收消息的线程 
	   Session session = connection.createSession(false,
	     Session.AUTO_ACKNOWLEDGE);
// Destination :消息的目的地;消息发送给谁. 
	   Destination destination = session.createQueue(QUEUE_NAME);
// 消费者,消息接收者 
	   MessageConsumer consumer = session.createConsumer(destination);
	   consumeMessagesAndClose(connection, session, consumer);
	  } catch (Exception e) {
	    System.out.println(e.toString());
	  }
	 }

	 protected void consumeMessagesAndClose(Connection connection,Session session, MessageConsumer consumer)
	 throws JMSException {
	  for (int i = 0; i < 1;) {
	   Message message = consumer.receive(1000);
	   if (message != null) {
	    i++;
	    onMessage(message);
	   }
	  }
	  System.out.println("Closing connection");
	  consumer.close();
	  session.close();
	  connection.close();
	 }

	 public void onMessage(Message message) {
	  try {
	   if (message instanceof TextMessage) {
	    TextMessage txtMsg = (TextMessage) message;
	    String msg = txtMsg.getText();
	    System.out.println("Received: " + msg);
	   }
	  } catch (Exception e) {
	   e.printStackTrace();
	  }

	 }

	 public static void main(String args[]) {
	  ReceiveMessage rm = new ReceiveMessage();
	  rm.receiveMessage();
	 }

	}


先开启activemq,运行发送者,再运行接受者,将会开导后台打印出:
hello world!

你可能感兴趣的:(apache,jms,activemq)