Spring整合JMS(三)——MessageConverter消息转换器

本文详细介绍了Spring整合JMS中的MessageConverter,解释了其在消息发送和接收时的作用,包括如何自定义MessageConverter,以及在使用MessageListenerAdapter时如何指定和使用MessageConverter。示例中展示了如何通过EmailMessageConverter转换Email对象与ObjectMessage,以及在MessageListener中处理转换后的对象。
摘要由CSDN通过智能技术生成

一、ActiveMQ入门实例

二、Spring整合JMS(一)——基于ActiveMQ实现

三、Spring整合JMS(二)——三种消息监听器

四、Spring整合JMS(三)——MessageConverter消息转换器

五、Spring整合JMS(四)——事务管理

 

 消息转换器MessageConverter

      MessageConverter的作用主要有两方面,一方面它可以把我们的非标准化Message对象转换成我们的目标Message对象,这主要是用在发送消息的时候;另一方面它又可以把我们的Message对象转换成对应的目标对象,这主要是用在接收消息的时候。

     下面我们就拿发送一个对象消息来举例,假设我们有这样一个需求:我们平台有一个发送邮件的功能,进行发送的时候我们只是把我们的相关信息封装成一个JMS消息,然后利用JMS进行发送,在对应的消息监听器进行接收到的消息处理时才真正的进行消息发送。

假设我们有这么一个Email对象:

 

<span style="color:#000000">package cn.tzz.jms.activemq.spring.obj;

import java.io.Serializable;

public class Email implements Serializable {
	 
	private static final long serialVersionUID = 1L;
	
	private String receiver;
    private String title;
    private String content;
 
    public Email(String receiver, String title, String content) {
        this.receiver = receiver;
        this.title = title;
        this.content = content;
    }
 
    public String getReceiver() {
        return receiver;
    }
 
    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getContent() {
        return content;
    }
 
    public void setContent(String content) {
        this.content = content;
    }

	@Override
	public String toString() {
		return "Email [receiver=" + receiver + ", title=" + title
				+ ", content=" + content + "]";
	}
    
}
</span>

  

 

 这个Email对象包含了一个简单的接收者email地址、邮件主题和邮件内容。我们在发送的时候就把这个对象封装成一个ObjectMessage进行发送,使用MessageConverter的时候我们在使用JmsTemplate进行消息发送时只需要调用其对应的convertAndSend方法即可。代码如下所示:

<span style="color:#000000"><span style="color:#000000">import java.io.Serializable;
import javax.jms.Destination;

public interface EntityProducerService {

	public void sendMessage(Destination destination, final Serializable obj);
}
</span></span>

 

<span style="color:#000000"><span style="color:#000000">import java.io.Serializable;

import javax.jms.Destination;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;

import cn.tzz.jms.activemq.spring.obj.service.EntityProducerService;
 
 
@Service(value="entityProducerService")
public class EntityProducerServiceImpl implements EntityProducerService {
 
	@Autowired
    private JmsTemplate jmsTemplate;
    
    public void sendMessage(Destination destination, final Serializable obj) {
    	 //未使用MessageConverter的情况  
//        jmsTemplate.send(destination, new MessageCreator() {
//   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值