如何转换JMS消息使用消息监听器域对象收到(How to convert a JMS message

2019-09-20 23:46发布

我在用:

  • 春天3.1.1
  • ActiveMQ的5.6.0

我有两个JMS应用程序:

  • 应用程序A使用JmsTemplate的发送使用jmsTemplate.convertAndSend(MSG)的域对象;
  • 应用程序B使用消息监听和消息转换器被登记

当所接收的消息被转换,被提取空值。

我知道这一定是相当简单的,但我得到空值,我还没有找到一个例子,看看有什么我做错了。

可有一个人请解释一下这是如何工作?

域对象

public class MyDomainObj implements Serializable {

private static final long serialVersionUID = -5411260096045103654L;
private String name;
private String msg;

public MyDomainObj() {

}

public MyDomainObj(String name, String msg) {
    this.name = name;
    this.msg = msg;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

}

应用程式

@Component
public class MessageSender {

    @Autowired
    private JmsTemplate jmsTemplate;

    public MessageSender() {

    }

    public void sendMessage(MyDomainObj msg) {
        jmsTemplate.convertAndSend(msg);
    }
}

应用B

@Component
public class MyReceiverConverter implements MessageConverter {

    @Override
    public Object fromMessage(Message msg) throws JMSException,
            MessageConversionException {

        MyDomainObj myDomainObj = new MyDomainObj(msg.getStringProperty("name"), msg.getStringProperty("msg"));


        return myDomainObj;
    }

    @Override
    public Message toMessage(Object msg, Session session) throws JMSException,
            MessageConversionException {

        ....
    }
}

Answer 1:

解决方法是:

@Override
public Object fromMessage(Message msg) throws JMSException,
        MessageConversionException {

    MyDomainObj myDomainObj = (MyDomainObj)((ObjectMessage)msg).getObject();

    return myDomainObj;
}


文章来源: How to convert a JMS message received using Message Listener to domain object
标签: spring jms