ActiveMq消费者读取ObjectMessage序列化时报错

控制台爆出的错误如下

Caused by: java.lang.ClassNotFoundException: Forbidden class com.atguigu.queue.Student! 
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.

通过错误查看 ActiveMQ

官方解释如下 :

ObjectMessage 对象依赖于封送/取消封送对象有效负载的 Java 序列化。此过程通常被认为是不安全的,因为恶意负载可以利用主机系统。这就是为什么从版本5.12.25.13.0开始,ActiveMQ强制用户明确白名单可以使用ObjectMessages交换的软件包。

解决方案有两种:

       1.设置要取消序列化的受信任包的列表,例如setTrustedPackages()要读取的对象

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setTrustedPackages(new ArrayList(Arrays.asList("org.apache.activemq.test,org.apache.camel.test".split(","))));

      2.允许您关闭安全检查并信任所有类。它对于测试目的很有用。setTrustAllPackages()

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
factory.setTrustAllPackages(true);

另外,ActiveMQ官方通常不鼓励使用 ObjectMessage,因为它引入了生产者和消费者之间类路径的耦合,但 ActiveMQ 支持它们作为 JMS 规范的一部分。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Spring Boot中集成ActiveMQ消费者,你需要执行以下步骤: 1. 添加Maven依赖:在你的`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> ``` 2. 配置ActiveMQ连接:在`application.properties`文件中添加以下配置: ```properties spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin ``` 3. 创建消息监听器:创建一个类来实现`MessageListener`接口,用于处理接收到的消息。例如: ```java import javax.jms.Message; import javax.jms.MessageListener; public class MyMessageListener implements MessageListener { @Override public void onMessage(Message message) { // 处理接收到的消息 } } ``` 4. 注册消费者:在你的Spring Boot应用程序中,使用`@JmsListener`注解注册消息监听器。例如: ```java import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class MyMessageConsumer { @JmsListener(destination = "myQueue") public void receiveMessage(String message) { System.out.println("Received message: " + message); } } ``` 在上面的例子中,我们使用`@JmsListener`注解来指定要监听的目标队列名字为`myQueue`,并在`receiveMessage()`方法中处理接收到的消息。 现在,当有消息到达`myQueue`队列时,`receiveMessage()`方法将被调用,并打印接收到的消息。 这就是在Spring Boot中集成ActiveMQ消费者的基本步骤。你可以根据自己的需求进行进一步的配置和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鲁蛋儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值