与JMS交换的接口



我想通过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,然后您可以发送二进制数据。

最新更新