JMS&ActiveMQ教程
基于JMS的消息传送
ActiveMQ与Spring集成
ActiveMQ与SpringBoot集成
ActiveMQ安全机制
ActiveMQ主从集群

ActiveMQ消息类型

ActiveMQ在处理消息的时候,不能直接进行消息的传递,必须将消息封装为对应的类型,才可以传输。

TextMessage文本消息(常用)

携带一个java.lang.String作为有效数据(负载)的消息,可用于字符串类型的信息交换。

ObjectMessage对象消息

携带一个可以序列化的Java对象作为有效负载的消息,可用于Java对象类型的信息交换。

注意:需要在接收方添加受信任的包

案例演示

1.在com.sxbdqn.activemq.model包下创建User类

2.修改QueueSender类中,添加发送对象的代码

//对象消息类型
User user = new User();
user.setId(100);
user.setName("张三");
user.setAge(18);
Message message = session.createObjectMessage(user);

3.修改QueueReceiver类中,添加对对象消息接收处理的代码

4.直接运行会报错

说消息已经处理,但是没有接收到,可以到指定的网站上查看如何配置

5.查看网站提供的解决方式,在消息消费者端将对象所在的包添加为受信任的

//1 .创建一个连接工厂
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(BROKER_URL);
//添加受信任的包
List trustList = new ArrayList();
trustList.add("com.sxbdqn.activemq.model");
connectionFactory.setTrustedPackages(trustList);

6.接收效果

MapMessage映射消息

携带一组键值对的数据作为有效负载的消息,其中Key必须为字符串,有效数据值必须是Java原始数据类型(或者它们的包装类)及String。

案例演示

1.修改QueueSender类中,添加发送映射消息的代码

//映射消息
MapMessage message = session.createMapMessage();
message.setInt("age",10);
message.setString("school","北京乐学网");

2.修改QueueReceiver类中,添加对映射消息接收处理的代码

3.运行查看效果

BytesMessage字节消息

携带一组原始数据类型的字节流(字节数组)作为有效负载的消息。

注意:发送和接收的顺序必须一致。

案例演示

1.修改QueueSender类中,添加发送字节消息的代码

//字节消息
BytesMessage message = session.createBytesMessage();
message.writeBoolean(true);
message.writeUTF("北京乐学网");//写字符串方法

2.修改QueueReceiver类中,添加对字节消息接收处理的代码

3.运行查看效果

StreamMessage流消息

携带一个原始数据类型流作为有效负载的消息,它保持了写入流时的数据类型,写入什么类型,则读取也需要是相同的类型。

注意:发送和接收的顺序必须一致。

案例演示

1.修改QueueSender类中,添加发送字节消息的代码

StreamMessage message = session.createStreamMessage();
message.writeLong(1000L);
message.writeString("哈哈");

2.修改QueueReceiver类中,添加对字节消息接收处理的代码

3.运行查看效果