关于JMS自定义消息不被信任导致javax.jms.JMSException: Failed to build body from content.

在使用Jms(版本5.14.5,在5.12.0版本之下没有此问题jmsQueueTemplate.convertAndSend(JMS_QUEUE_NAME, messageT) 发送消息时,在ObjectMessage放入自己定义的对象报错:

javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: Forbidden class com.sykj.why.mongo.document.entity.MessageT! This class is not trusted to be serialized as ObjectMessage payload. Please take a look at http://activemq.apache.org/objectmessage.html for more information on how to configure trusted classes.

看日志可知因为自己的类不被信任,还给出了解决问题的文档:http://activemq.apache.org/objectmessage.html

官网给出了很多种解决方案,根据自己的项目选择这种,注册一下自己定义消息类的包就可以了:

/**
     * 注册activeMQ连接工厂
     *
     * @return
     */
    @Bean
    public ConnectionFactory connectionFactory() {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(JMS_QUEUE_NAME);
        connectionFactory.setBrokerURL(JMS_BROKER_URL);
        connectionFactory.setUserName(JMS_ACTIVEMQ_USERNAME);
        connectionFactory.setPassword(JMS_QUEUE_PASSWORD);
        // 添加信任自定义消息类所在包
        connectionFactory.setTrustedPackages(new ArrayList<>(Arrays.asList(new String[]{MessageT.class.getPackage().getName()})));
        return connectionFactory;
    }

猜你喜欢

转载自blog.csdn.net/E__V__A__N__/article/details/82986667