Java 与jms交换的接口

Java 与jms交换的接口,java,interface,jms,Java,Interface,Jms,我想通过jms队列与客户交换消息。比如: 用户更新地址;田街;;OldValue:foo;NewValue:bar 与客户交流的最佳界面是什么?我可以像上面的文本一样定义它,并以文本消息的形式发送。但这并不是我真正喜欢的界面 我应该用java类交换API吗?还是通过JMS使用Soap? 最好的方法是什么?Soap听起来像是最简单的,任何xml包装都可以。 不过,我会选择google protobufs,然后您可以发送二进制数据。您可以发送文本或java对象(必须实现java.io.Seriali

我想通过jms队列与客户交换消息。比如:

用户更新地址;田街;;OldValue:foo;NewValue:bar

与客户交流的最佳界面是什么?我可以像上面的文本一样定义它,并以文本消息的形式发送。但这并不是我真正喜欢的界面

我应该用java类交换API吗?还是通过JMS使用Soap?
最好的方法是什么?

Soap听起来像是最简单的,任何xml包装都可以。
不过,我会选择google protobufs,然后您可以发送二进制数据。

您可以发送文本或java对象(必须实现java.io.Serializable接口)。如果要使用简单文本,请尝试将其结构化为结构化格式xml或Json

否则使用java对象传输


您可以发送文本或java对象(必须实现java.io.Serializable接口)。如果要使用简单文本,请尝试将其结构化为结构化格式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());
    }
    }

您可以发送文本或java对象(必须实现java.io.Serializable接口)。如果您要使用简单文本,请尝试将其结构化为结构化格式xml或Json。谢谢您的回答。发送对象听起来不错,但我必须与客户交换/定义它们。我想我支持json解决方案。即使这样,也必须指定接口(当然),但它可能是最灵活的接口。可以添加新字段,但并非所有客户都关心该字段。所以版本控制也不是一个大问题。好的,听起来不错,但如果你问我,我会选择对象方法。这样可以避免从一端生成Json,从另一端解析Json。使用对象方法,您需要做的就是共享一个包含接口声明的jar文件。就这样。