如何在ActiveMQ上发布JSON对象

时间:2018-06-11 06:43:42

标签: json jms activemq

我正在尝试将JSON消息(对象)发布到ActiveMQ队列/主题上。 目前我正在将JSON对象转换为String然后发布它。 但我不想将其转换为String.I不想将其转换为String而不是我想要发送的,因为它是JSON对象作为消息。

以下是我的代码

public void sendMessage(final JSONObject msg) {
        logger.info("Producer sends---> " + msg);
        jmsTemplate.send(destination, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                String s = msg.toString();
                return session.createTextMessage(s);
                // createTextMessage(msg);
            }
        });
    }

1 个答案:

答案 0 :(得分:1)

在队列中使用文本是最佳做法,因为您可以更轻松地进行调试,并且不会受限于完全相同的语言/框架甚至是队列两侧应用程序上的库版本。

如果你真的想要那种硬耦合(即当你在一个应用程序中使用队列而不需要在队列上手动检查消息时),你可以这样做:

代替return session.createTextMessage(s);执行return session.createObjectMessage(msg);

还有一件事:请注意,如果您没有100%控制代码发布消息,则使用JMS ObjectMessage可能会导致安全问题。因此,在默认的ActiveMQ设置中不允许这样做。您需要在客户端和服务器设置中启用此功能。有关参考,请参阅此页:http://activemq.apache.org/objectmessage.html