与jms交换的接口

时间:2014-01-23 09:29:55

标签: java interface jms

我想通过jms队列与客户交换消息。类似的东西:

  

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

Exchange与客户的最佳界面是什么?我可以像上面的文本一样定义它并发送为TextMessage。但这并不是我想要的界面。

我应该用java类交换API吗?或者使用Soap over JMS? 什么是最好的方式?

2 个答案:

答案 0 :(得分:3)

您可以发送文本或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());
    }
    }

答案 1 :(得分:0)

肥皂声最简单,任何xml包装都可以。 我会选择谷歌protobufs,然后你可以发送二进制数据。