1
好吧,这就是交易。 我正在阅读ActiveMQ网站上的this tutorial和documentation。JSON,Stomp和ActiveMQ
在我们的文档,下消息转换,这样的句子:
上发送变换邮件头和SUBSCRIBE消息可以 用于指示ActiveMQ的从文本转换消息到 格式你的愿望。目前,ActiveMQ的配备了一个变压器 可转换XML/JSON文本到Java对象
和
的ActiveMQ使用的XStream其转型的需求。由于它是 可选依赖项,所以您必须将其添加到代理的类路径中,方法是将相应的JAR放入lib /文件夹中。此外,如果您计划使用JSON转换,您必须将Jettison JSON解析器 添加到类路径中。
所以我这样做,我已经注释我POJO与XStreamAlias:
@XStreamAlias("ProvaPojo")
public class ProvaPojo implements Serializable {
private static final long serialVersionUID = 1687248536279612587L;
@XStreamAlias("fieldOne")
private int fieldOne;
@XStreamAlias("fieldTwo")
private String fieldTwo;
public int getFieldOne() {
return fieldOne;
}
public void setFieldOne(int fieldOne) {
this.fieldOne = fieldOne;
}
public String getFieldTwo() {
return fieldTwo;
}
public void setFieldTwo(String fieldTwo) {
this.fieldTwo = fieldTwo;
}
}
,这是我的PHP代码(原来的例子是here):
$body = array(
'ProvaPojo' => array(
array('fieldOne' => 14),
array('fieldTwo' => 'Stringa')
)
);
$header = array();
$header['transformation'] = 'jms-map-json';
$mapMessage = new StompMessageMap($body, $header);
$con->send($queue, $mapMessage);
而且这是我的听众
@Override
protected void _onMessage(Message message) {
if (!(message instanceof ObjectMessage))
throw new IllegalStateException();
ObjectMessage objectMessage = (ObjectMessage) message;
try {
if (!(objectMessage.getObject() instanceof BlacklisterRecipientBean))
throw new IllegalArgumentException(
"The message content is not an instance of "
+ BlacklisterRecipientBean.class.getSimpleName());
BlacklisterRecipientBean recipient = (BlacklisterRecipientBean) objectMessage
.getObject();
log.info("_onMessage(Message)");
IncomingBlacklistAddJMSTrigger trigger = new IncomingBlacklistAddJMSTrigger();
trigger.setArgs(recipient);
notifyObservers(trigger);
} catch (JMSException e) {
log.error("_onMessage(Message) - exception ignored", e);
}
}
但我总是得到一个ActiveMQTextMessage。我错过了什么?