ActiveMQ 在 Spring 中的应用

生产者:

ActiveMQ 在 Spring 中的应用

需要 特别注意的是:两个项目【消费者】 和【生产者】中都有一个model目录,而且目录下面都有User实体类,我们的 【生产者】 向 【消费者】发送 object类型的消息的时候,需要确保,【消费者】中的User类中的*** 要与 【生产者】中的User类中的***相同,这样才能正常的 序列化和发序列化。

消费者: 同步接收

ActiveMQ 在 Spring 中的应用

异步接收:

(1)我们创建的 jmsTemplate 模板对象,是不能直接创建异步接收所使用到的监听器的。

(2)既然jmsTemplate模板对象没办法创建监听器,那么 我们就从 xml配置文件中创建 一个监听器。

配置文件中创建 默认消息监听器容器,然后这个容器会为我们创建真正的消息监听器对象:

ActiveMQ 在 Spring 中的应用

需要注意的是:

当 创建一个 spring容器的时候就会加载xml配置文件,加载配置文件的时候就会为我们创建 xml文件中 所有的bean对象。 默认监听器容器对象也会被创建,这个消息监听器对象被创建完成之后就开始自动工作了,也就是监听ActiveMQ 中对应的消息,当监听到对应的消息后,会自动调用onMessage方法,然后将这个message消息传递给我们的onMessage方法,然后执行方法中的业务逻辑。

从上面可以看出,我们只需要做一步:就是创建spring容器。

Main方法中创建spring容器的代码:

ActiveMQ 在 Spring 中的应用

上面是 两种 接收消息的方法:【同步接收】 和 【异步接收】。

 

发送【消息】的两种方法:【点对点发送模式】和【发布/订阅模式】:

配置 Spring配置文件的时候,配置JmsTmeplate bean对象的时候,为这个bean对象添加一个属性标签<property>:

<proper nam标签的 value 为 true,表示采取【发布/订阅模式】。

                    标签的value默认为false,表示采取【点对点模式】。

当我们采取【点对点模式】的时候,【生产者】和【消费者】两个spring配置文件中的JmsTemplate对应的bean标签不用做任何的修改,因为<property name=pubSubDomain value=false/>默认为 false。所以不配置就是false,默认采用点对点模式。

 

当我们采取【发布订阅模式】的时候,【生产者】和【消费者】两个项目的spring配置文件中的JmsTempLate对应的bean对象中,都需要添加上<property name=pubSubDomain value=true/> ,【生产者】配置这个属性的原因是:告诉ActiveMQ采用什么方式 管理消息和转发消息,【消费者】配置这个属性的原因是:采取什么样的方式来获取这个信息。