消息的类型:TextMessage、MapMessage、ObjectMessage、BytesMessage、和StreamMessage等五种,以ObjectMessage为例。
1、创建一个实体类,代码如下:
package com.wedu.mq;
import java.io.Serializable;
public class Person implements Serializable{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
2、消息发送者代码如下:
package com.wedu.mq;
import javax.jms.Connection;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import com.wedu.mq.activemq.util.Person;
public class Sender {
public static void main(String[] args) throws Exception {
//创建连接工厂
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
//关闭安全检查,对象序列化
factory.setTrustAllPackages(true);
//创建连接
Connection connection = factory.createConnection();
//打开连接
connection.start();
//创建非事务,自动签收会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建队列
Queue queue = session.createQueue("Message Type");
//创建消息的生产者
MessageProducer producer = session.createProducer(queue);
ObjectMessage message = session.createObjectMessage();
Person p = new Person();
p.setName("test");
p.setAge(29);
message.setObject(p);
producer.send(message);
producer.close();
session.close();
connection.close();
}
}
3、消息接受者代码如下:
package com.wedu.mq;
import javax.jms.Connection;
import javax.jms.MessageConsumer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import com.wedu.mq.activemq.util.Person;
public class Receiver {
public static void main(String[] args) throws Exception {
//创建连接工厂
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
//关闭安全检查,对象序列化
factory.setTrustAllPackages(true);
//创建连接
Connection connection = factory.createConnection();
//打开连接
connection.start();
//创建非事务,自动签收会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建队列
Queue queue = session.createQueue("Message Type");
//创建消息的消费者
MessageConsumer consumer = session.createConsumer(queue);
//接收消息
ObjectMessage message = (ObjectMessage) consumer.receive();
System.out.println("receive data:" + (Person)message.getObject());
consumer.close();
session.close();
connection.close();
}
}
4、启动ActiveMQ服务,运行消息发送和接收程序,打开队列页面,显示如下:
控制台输出: