[size=medium]JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。
· StreamMessage -- Java原始值的数据流
· MapMessage--一套名称-值对
· TextMessage--一个字符串对象
· ObjectMessage--一个序列化的 Java对象
· BytesMessage--一个未解释字节的数据流
1.发送者
package com.tech.gps.util;
import org.springframework.jms.core.JmsTemplate;
import com.tech.gps.model.Bus;
public class MessageSender {
private JmsTemplate jmsTemplate;
public void sendMessage(Bus bus){
jmsTemplate.convertAndSend(bus);
}
public JmsTemplate getJmsTemplate() {
return jmsTemplate;
}
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
}
2.消息转化
package com.tech.gps.util;
import java.io.Serializable;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import javax.jms.TopicPublisher;
import org.apache.activemq.command.ActiveMQObjectMessage;
import org.springframework.jms.support.converter.MessageConversionException;
import org.springframework.jms.support.converter.MessageConverter;
import com.tech.gps.model.Bus;
public class MessageConvertForSys implements MessageConverter {
public Message toMessage(Object object, Session session)
throws JMSException, MessageConversionException {
System.out.println("sendMessage:"+object.toString());
ActiveMQObjectMessage msg = (ActiveMQObjectMessage) session.createObjectMessage();
msg.setObject((Serializable) object);
return msg;
}
public Object fromMessage(Message message) throws JMSException,
MessageConversionException {
Bus bus = null;
if(message instanceof ActiveMQObjectMessage){
ActiveMQObjectMessage aMsg = (ActiveMQObjectMessage) message;
bus=(Bus) aMsg.getObject();
}
return bus;
}
}
3.接受消息
package com.tech.gps.util;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import com.tech.gps.model.Bus;
public class MessageReceiver implements MessageListener {
public void onMessage(Message m) {
Bus bus= new Bus();
if(m instanceof ObjectMessage){
ObjectMessage objectMessage=(ObjectMessage) m;
try {
bus=(Bus) objectMessage.getObject();
String busNo = bus.getBusNO();
String xpoint = bus.getxPoint();
String yPoint = bus.getyPoint();
System.out.println("车编号:"+busNo+" X:"+xpoint+" Y:"+yPoint);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
[/size]
分享到:
相关推荐
5. **Object消息**:Spring提供了一个特殊的功能,允许我们直接序列化Java对象为消息。使用`ObjectMessage`,我们可以将自定义Java对象发送到消息队列,然后在消费者端反序列化恢复对象。这种方式简化了数据传输,但...
"MegSerder"可能是"MessageSerializer"的误写,指的是消息序列化器,用于将Java对象转换为可发送的消息格式,以及将接收到的消息反序列化回Java对象。 在ActiveMQ中,我们可以自定义消息序列化和反序列化的方式,以...
3. **ObjectMessage**:序列化的Java对象。 4. **BytesMessage**:任意字节流数据。 5. **StreamMessage**:原始Java值的数据流。 JMS支持两种消息传递模式: 1. **点对点(P2P)**:一个生产者对应一个消费者,...
例如,通过设置`JmsTemplate`的`defaultDestinationName`属性,你可以指定默认的发送目标,或者通过`SimpleMessageConverter`实现自定义的消息序列化和反序列化。 在实际项目中,ActiveMQ与Spring的结合可以用于...
同时,ActiveMQ支持多种消息正文格式,包括文本、对象、字节流、原始值的序列化流等。 ### 2. ActiveMQ的消息形式 ActiveMQ支持的消息传递类型主要有两种:点对点模式和发布/订阅模式。点对点模式中,一个生产者...
消息可以是字符串、对象,甚至自定义的Java对象,只要它们能被序列化。 5. **消息消费者(Consumer)**:同样,`JmsTemplate`也提供了`receive()`和`receiveAndConvert()`方法来接收消息。消费者通常是一个监听器,...
**ActiveMQ与Spring整合的简单例子** ActiveMQ是Apache出品的一款开源消息中间件(Message Broker),它是Java消息服务(Java Message Service,简称JMS)的一个实现。JMS是一种为Java应用程序提供标准接口,用于...
整合ActiveMQ到Spring应用中,首先需要在项目的pom.xml文件中添加相应的依赖,包括ActiveMQ客户端、Spring相关库等。然后,可以创建消息载体类,如Order类,它需要实现Serializable接口,确保对象能在网络间传输。 ...
YAML (Yet Another Markup Language) 是一种人类可读的数据序列化格式,用于配置文件和数据交换。相比传统的 XML 或 JSON,YAML 更加简洁易读。 **2.5 YAML 配置的优势在哪里?** YAML 配置的主要优势包括: - **...
RMI通过序列化Java对象并在网络中传输这些对象的字节流来实现远程通信。 2. Java RMI的组成: - RMI对象实例:在不同虚拟机中的Java对象。 - RMI远程引用层:负责解析引用,并将调用请求转发给底层通信协议。 - ...
它可以将Java对象自动序列化为适合JMS的消息格式,或者反序列化从JMS接收到的消息。 7. **消息驱动的POJO(MDP)** Spring支持使用简单的Java类作为消息监听器,这些类可以被声明为消息驱动的POJO,从而避免了与...
- **ObjectMessage**:用于发送Java序列化对象。 - **BytesMessage**:用于发送字节流数据。 #### 四、ActiveMQ的安装与使用 ##### 安装步骤 1. **下载ActiveMQ**:从官方网站 (`http://activemq.apache.org/`) ...
Protobuf & json | 数据序列化 | [https://github.com/google/protobuf](https://github.com/google/protobuf) Jenkins | 持续集成工具 | [https://jenkins.io/index.html](https://jenkins.io/index.html) Maven | ...
6. **JSON处理**:如Jackson、Gson,用于JSON数据的序列化和反序列化,是API接口开发中的必备工具。 7. **并发编程**:如Guava库,提供了高级并发工具类,帮助开发者更好地管理和同步线程。 8. **Spring框架**:...
整合第三方项目:Spring Boot可以方便地与各种第三方库集成,如WebSockets、Spring Data、Spring Batch、FreeMarker、ActiveMQ、Apache Kafka、Swagger等,通过添加对应的starter依赖即可快速集成。 其他问题如热...
YAML 是一种简洁易读的数据序列化格式,相比 XML 更加简洁,常用于 Spring Boot 的配置文件。YAML 配置可以提供更直观的层次结构,并且易于读写。Spring Boot 同样支持 XML 配置,但通常推荐使用 YAML 或者 ...
3. **序列化与反序列化**:Ruby和Java的数据结构不同,因此在任务的序列化和反序列化过程中,需要确保数据能在两种语言之间正确转换。 4. **任务调度**:Sidekiq支持定时任务,Java端也需要有相应的定时任务管理...
RMI通过序列化和反序列化对象来跨网络传递数据,这使得开发者能够像调用本地方法一样调用远程方法。 接下来,Java Message Service(JMS)是一种消息中间件,用于在分布式系统中传递异步消息。JMS提供两种消息模型...
在Java应用中,合理使用线程池、减少网络I/O开销、选择合适的序列化方式(如JSON、protobuf)都能提升MQ性能。 以上就是根据提供的信息推测的七个关于消息队列的关键面试知识点。在实际面试中,面试者需要对这些...