5

我在用:

  • 春天 3.1.1
  • 活动MQ 5.6.0

我有两个 JMS 应用程序:

  • App 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;
}

}

应用程序 A

@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 {

        ....
    }
}
4

1 回答 1

3

Solution is:

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

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

    return myDomainObj;
}
于 2012-08-08T11:36:34.390 回答