以下实现JMS p2p 配置
1. AsQueueSender
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class AsQueueSender {
private JmsTemplate jmsTemplate;
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
public void sendMessage(final String message) {
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage(message);
return textMessage;
}
});
}
}
2. AsQueueReceive
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import com.service.RPDService;
public class AsQueueReceive implements MessageListener{
/**
This method is called asynchronously by JMS when a message arrives
at the queue. Client applications must not throw any exceptions in
the onMessage method.
@param message A JMS message.
*/
private Logger logger = Logger.getLogger(this.getClass());
private RPDService rpdService;
/**
* @return the rpdService
*/
public RPDService getRpdService() {
return rpdService;
}
/**
* @param rpdService the rpdService to set
*/
public void setRpdService(RPDService rpdService) {
this.rpdService = rpdService;
}
public void onMessage(Message message)
{
TextMessage msg = (TextMessage) message;
try {
logger.info("risk Id is "+msg.getText());
rpdService.saveRiskHistory(msg.getText());
} catch (JMSException ex) {
ex.printStackTrace();
}
}
}
3. spring container configuration
<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jms/rateQueueFactory"></property>
</bean>
<bean id="messageQueue" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jms/MyRequestQueue"></property>
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="defaultDestination" ref="messageQueue"></property>
</bean>
<bean id="asQueueSender" class="com.util.AsQueueSender" scope="singleton">
<property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>
<bean id="asQueueReceive" class="com.util.AsQueueReceive">
<property name="rpdService" ref="rpdService"></property>
</bean>
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="destination" ref="messageQueue"></property>
<property name="messageListener" ref="asQueueReceive"></property>
</bean>
4. 在服务器上建立对应的JNDI NAME 分别配置
jms/rateQueueFactory
jms/MyRequestQueue.
测试