我想通过JMS队列与客户交换消息。类似:
用户更新的地址;菲尔德街;OldValue:foo;newValue:bar;
与客户交换的最佳界面是什么?我可以像上面的文本一样定义它,并将其发送为TextMessage。但这并不是我更喜欢的接口。
我可以将API与Java课程交换吗?还是在JMS上使用肥皂?最好的方法是什么?
您可以发送文本或Java对象(必须实现Java.io.serializable接口)。如果您使用简单的文本,请尝试使其以Structred格式XML或JSON结构。
否则使用Java对象传输
您可以发送文本或Java对象(必须实现Java.io.serializable接口)。如果您使用简单的文本,请尝试使其以Structred格式XML或JSON结构。
如果要使用Java对象,这也可能起作用。这是一个非常简单的示例:
/*the object you will be sent to consumer*/
public class MSObject implements java.io.Serializable{
......
}
/*sending method*/
private void sendObjectMessage() throws Exception {
ActiveMQSession mysession = (ActiveMQSession) session;
ObjectMessage msg = session.createObjectMessage();
msg.setObject( new MSObject("first name","Jimmy") );
msg.setJMSType(this.CMD_TYPE_MESSAGETYPE_OBJECT);
producer.send(msg);
if (transacted) {
session.commit();
}
System.out.println("The object message has been sent to " + this.subject
+ " queue.");
Thread.sleep(sleepTime);
}
/*receiving method*/
public void onMessage(Message message) {
if (message instanceof ObjectMessage) {
System.out.println("recevied a Object Message");
ObjectMessage msg = (ObjectMessage)message;
MSObject obj = (MSObject)msg.getObject();
System.out.println("info: ");
System.out.println("key: "+obj.getKey());
System.out.println("value: "+obj.getValue());
}
}
肥皂听起来很简单,任何XML包装都可以起作用。我会选择Google Protobufs,然后您可以发送二进制数据。