ActiveMQ在处理消息的时候,不能直接进行消息的传递,必须将消息封装为对应的类型,才可以传输。
携带一个java.lang.String作为有效数据(负载)的消息,可用于字符串类型的信息交换。
携带一个可以序列化的Java对象作为有效负载的消息,可用于Java对象类型的信息交换。
注意:需要在接收方添加受信任的包
案例演示
1.在com.bjpowernode.activemq.model包下创建User类
2.修改QueueSender类中,添加发送对象的代码
//对象消息类型Useruser=newUser();user.setId(100);user.setName("张三");user.setAge(18);Messagemessage=session.createObjectMessage(user);3.修改QueueReceiver类中,添加对对象消息接收处理的代码
4.直接运行会报错
说消息已经处理,但是没有接收到,可以到指定的网站上查看如何配置
5.查看网站提供的解决方式,在消息消费者端将对象所在的包添加为受信任的
//1.创建一个连接工厂ActiveMQConnectionFactoryconnectionFactory=newActiveMQConnectionFactory(BROKER_URL);//添加受信任的包ListtrustList=newArrayList();trustList.add("com.bjpowernode.activemq.model");connectionFactory.setTrustedPackages(trustList);6.接收效果
携带一组键值对的数据作为有效负载的消息,其中Key必须为字符串,有效数据值必须是Java原始数据类型(或者它们的包装类)及String。
1.修改QueueSender类中,添加发送映射消息的代码
//映射消息MapMessagemessage=session.createMapMessage();message.setInt("age",10);message.setString("school","北京动力节点");2.修改QueueReceiver类中,添加对映射消息接收处理的代码
3.运行查看效果
BytesMessage字节消息
携带一组原始数据类型的字节流(字节数组)作为有效负载的消息。
注意:发送和接收的顺序必须一致。
1.修改QueueSender类中,添加发送字节消息的代码
//字节消息BytesMessagemessage=session.createBytesMessage();message.writeBoolean(true);message.writeUTF("北京动力节点");//写字符串方法2.修改QueueReceiver类中,添加对字节消息接收处理的代码
StreamMessage流消息
携带一个原始数据类型流作为有效负载的消息,它保持了写入流时的数据类型,写入什么类型,则读取也需要是相同的类型。
StreamMessagemessage=session.createStreamMessage();message.writeLong(1000L);message.writeString("哈哈");