关于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;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值