当一个消息发送时候,消息会被交给消息代理,消息代理可以确保消息被发送到指定的目的地,同时解放发送者,使其能够继续进行其它业务。消息代理通常有ActiveMQ、RabbitMQ...,目的地通常有队列和主题,队列采用点对点的模型,主题采用发布订阅模型
点对点模型:消息队列可以有多个接受者,但每条消息只能被一个接收者取走
发布订阅模型:消息队列可以有多个订阅者,每条消息可以发送给多个主题订阅者
2、JMS发送/接收消息
1)activemq配置,使用ActiveMQ,并使用了JMSTemplate。
JMS模板为开发者提供了与消息代理进行交互发送和接收消息的标准API,几乎每个消息代理都支持JMS。Jms模板和spring Date提供的jdbc模板一样可以消除样板代码,让开发更集中在业务处理上。
<!-- ActiveMQ连接工厂 --> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property value="tcp://localhost:61616"></property> </bean> <!-- 消息队列 --> <bean class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg value="userqueue"></constructor-arg> </bean> <!-- 消息主题 --> <bean class="org.apache.activemq.command.ActiveMQTopic"> <constructor-arg value="usertopic"></constructor-arg> </bean> <!-- 定义模板 --> <bean class="org.springframework.jms.core.JmsTemplate"> <property ref="activeMQConnectionFactory"></property> </bean>