要测试持久化,就要设置持久化,在JmsProducer.java中加上messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT);,如果没有开启持久化,数据是不会写到数据库中的,运行JmsProducer.java类的main方法。
运行成功后,在ActiveMQ的管理界面的queue标签,可以看到有3条消息,再去看数据库的activemq_msgs表,会发现里面有几条记录,这就是持久化的结果,说明配置的持久化生效了。
再次运行消费者,将消息消费掉,再去数据库里查看,activemq_msgs表里的数据就没了,说明消息的消费操作也同步更新了数据库。
下面来验证Topic,先启动消费者监听,查看数据库的activemq_acks表,可以发现已经出现数据了,再启动生产者,消费者执行消费,查看数据库的activemq_acks表和activemq_msgs表,里面的记录依旧存在。这个地方结合微信公众号来理解,微信公众号发布过哪些文章,微信公众号的关注者,不能因为服务的关闭,就把发布的文章和关注者清空,这是不合理的,从这个角度来理解就能明白了。