在Jirth中将Java对象从JMS队列传递给源代码?

时间:2013-07-23 13:33:55

标签: java jms mirth

我将java对象从JMS发送方客户端传递给mirth.Java类看起来像这样:

public class OrderDetails implements Serializable{

    private static final long serialVersionUID = -4617153110762983450L;
    private Long mrn;
    private Long orderNo;
    private Long patientId;
    private Long orderId;
    private Long encounterId;

}

JMS客户端代码如下所示:

public void sendMessage(final OrderDetails orderDetails) throws JMSException {
        LOG.debug("Starting sendMessage of AMQMsgSenderService");
        jmsTemplate.send(new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                LOG.info("SENDING: " + orderDetails);
                ObjectMessage message = session.createObjectMessage( orderDetails );
                return message;
            }
        });
        LOG.debug("Ending sendMessage of AMQMsgSenderService");
    }

Mirth中的连接器类型是 JMS Reader 。我想在源代码中接收 java对象并转换为 XML或JavaScript对象。在欢乐中有可能吗?我正在使用Mirth版本2.2.1.5861。

1 个答案:

答案 0 :(得分:1)

我可能会建议一种可能的解决方案,即在Mirth Connect v3.0下测试。我希望它也应该在v2.2下工作。基本上,您正朝着正确的方向前进,可能的步骤是:

  • 在JMS Sender端,创建对象的实例并填充必填字段;
  • 序列化对象(例如使用org.apache.commons.lang3.SerializationUtils.serialize);
  • 然后对结果进行编码(使用Mirth内置Base64编码器);
  • 将此传递给配置为JMS发件人的目标连接器。

在接收方,以相反的顺序执行相同的操作:

  • 解码收到的原始消息(Base64解码器);
  • 将字节数组反序列化为对象(使用org.apache.commons.lang3.SerializationUtils.deserialize);
  • 访问对象的字段。

希望这有帮助。

(Ps。上面详细描述的所有步骤,屏幕截图和代码片段,对于发送者和接收者都是Mirth频道的情况,在“Unofficial Mirth Connect developer’s guide”中给出。 免责声明:我是本书的作者,欢迎任何意见或建议。)