JMS 簡介
JMS即消息服務(wù),是能夠異步處理客戶請求的開發(fā)模型。為支持消息的異步處理,Java/J2EE平臺引入了JMS API。JMS支持兩種消息模型:點對點和發(fā)布/訂閱模式。
JMS 抽象對象
從spring in action框架中jms相關(guān)包結(jié)構(gòu)看,主要包括如下內(nèi)容:
● org.springframework.jms:
● org.springframework.jms.connection:
● org.springframework.jms.core:
● org.springframework.jms.core.support:
● org.springframework.jms.support
● org.springframework.jms.support.converter:
● org.springframework.jms.support.destination
發(fā)送消息
JmsTemplate模板的使用:
了解配置:
<beans>
<!—定義連接工廠-->
<bean id=”connectionFactory” class=”org.springframework.jndi.JndiObjectFactoryBean”>
<property name=”jndiName”>
<value>ConnectionFactory</value>
</property>
<property name=”jndiTemplate”>
<ref local=”jndiTemplate”/>
</property>
</bean>
<!—定義目的地-->
<bean id=”destination” class=”org.springframework.jndi.JndiObjectFactoryBean”>
<property name=”jndiName”>
<value>queue/testQueue</value>
</property>
<property name=”jndiTemplate”>
<ref local=”jndiTemplate”/>
</property>
</bean>
<!—jmsTemplate模板-->
<bean id=”jmsTemplate” class=”org.springframework.jms.core.JmsTemplate”>
<property name=”connectionFactory”>
<ref local=”connectionFactory”/>
</property>
<property name=”defaultDestination”>
<ref local=”destination”/>
</property>
</bean>
<bean id=”jndiTemplate” class=”org.springframework.jms.jndi.JndiTemplate”>
<property name=”environment”>
<props>
<prop key = “java.naming.factory.initial”>
Org.jnp.interfaces.NamingContextFactory
</prop>
<prop key = “java.naming.provider.url”>
Jnp://url
</prop>
<prop key = “java.naming.factory.url.pkgs”>
Org.jboss.naming:org.jnp.interfaces
</prop>
</props>
</property>
</bean>
<beans>
以上配置通過spring in action JNDI抽象服務(wù)中的org.springframework.jndi.JndiObjectFactoryBean獲得。最后定義同客戶應(yīng)用交互的jmsTemplate.即org.springframework.jms.core.JmsTemplate,它將引用以上配置中的目的地和連接工廠。
編寫客戶端代碼
JmsTemplate Jt = (JmsTemplate)this.getBean();
Jt.sent(new MessageCreator())
{
Public Message createMessage(Session session) throws JMSException{
Return session.createTextMessge(“文本消息,queue/testQueue”);
Log.info(“發(fā)送消息成功;”);
}
}
從spring in action框架提供的Jms抽象中,JmsTemplate同MessageCreator結(jié)合能夠發(fā)送消息,因此需要實現(xiàn)MessageCreator回調(diào)接口定義的createMessage發(fā)法。