信手拈来 妙手偶得 » 日志 » 使用Spring2.0发送和接受JMS消息
使用Spring2.0发送和接受JMS消息
Junglesong 发表于 2008-04-05 14:46:43
1.JmsQueueSender类,用于发送消息
package com.sitinspring.springjms;

import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.Session;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.JmsTemplate102;
import org.springframework.jms.core.MessageCreator;


public class JmsQueueSender
{

private JmsTemplate jmsTemplate;

private Queue queue;


public void setConnectionFactory(ConnectionFactory cf)
{
this.jmsTemplate = new JmsTemplate102(cf, false);
}


public void setQueue(Queue queue)
{
this.queue = queue;
}


public void simpleSend()
{

this.jmsTemplate.send(this.queue, new MessageCreator()
{

public Message createMessage(Session session) throws JMSException
{
return session.createTextMessage("hello queue world");
}
});
}

public static void main(String[] args)
{
ApplicationContext appContext = new FileSystemXmlApplicationContext("spring-jms.xml");

JmsQueueSender jmsSender = (JmsQueueSender)appContext.getBean("jmsQueueSender");
jmsSender.simpleSend();
}
}
2.ExampleListener,用于接受消息,他是一个Message Driven Pojo.
package com.sitinspring.springjms;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;


public class ExampleListener implements MessageListener
{


public void onMessage(Message message)
{
//org.springframework.jms.listener.DefaultMessageListenerContainer102

if (message instanceof TextMessage)
{
System.out.print("I have received a msg:");

try
{
System.out.println(((TextMessage) message).getText());

} catch (JMSException ex)
{
throw new RuntimeException(ex);
}

} else
{
throw new IllegalArgumentException(
"Message must be of type TextMessage");
}
}
}
3.配置文件spring-jms.xml,所有配置均在其中.
值得注意的是标有102处,如果你使用的是DefaultMessageListenerContainer,你将为异常所困扰.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- JMS 配置-->
<bean id="jmsQueueSender"
class="com.sitinspring.springjms.JmsQueueSender">
<property name="connectionFactory" ref="connectionFactory" />
<property name="queue" ref="destination" />
</bean>

<!-- and this is the attendant message listener container -->
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer102">
<property name="connectionFactory" ref="connectionFactory" />
<property name="concurrentConsumers" value="5" />
<property name="destination" ref="destination" />
<property name="messageListener" ref="messageListener" />
</bean>
<!-- this is the Message Driven POJO (MDP) -->
<bean id="messageListener" class="com.sitinspring.springjms.ExampleListener" />

<bean id="connectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>MyJMSConnectionFactory</value>
</property>
<property name="jndiTemplate">
<ref local="jndiTemplate"></ref>
</property>
</bean>

<bean id="destination"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>MyJMSQueue</value>
</property>
<property name="jndiTemplate">
<ref local="jndiTemplate"></ref>
</property>
</bean>

<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref local="connectionFactory" />
</property>
<property name="defaultDestination">
<ref local="destination" />
</property>
</bean>

<!-- JNDI 配置 -->
<bean id="jndiTemplate"
class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
t3://localhost:7001
</prop>
<prop key="java.naming.factory.url.pkgs">
weblogic.jndi.factories
</prop>
</props>
</property>
</bean>
</beans>
程序下载(程序用到的jar请自行添加,主要是Weblogic.jar和Spring.jar及jakatar commons的一些包):
http://www.blogjava.net/Files/sitinspring/SpringJMS20070910171622.rar
参考资料下载:
Spring2.0的参考手册(两个文件下载到同一目录再解压)
http://www.blogjava.net/Files/junglesong/spring2.0_ref.part1.rar
http://www.blogjava.net/Files/junglesong/spring2.0_ref.part2.rar
package com.sitinspring.springjms;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.Session;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.JmsTemplate102;
import org.springframework.jms.core.MessageCreator;

public class JmsQueueSender
{
private JmsTemplate jmsTemplate;
private Queue queue;

public void setConnectionFactory(ConnectionFactory cf)
{
this.jmsTemplate = new JmsTemplate102(cf, false);
}

public void setQueue(Queue queue)
{
this.queue = queue;
}

public void simpleSend()
{
this.jmsTemplate.send(this.queue, new MessageCreator()
{
public Message createMessage(Session session) throws JMSException
{
return session.createTextMessage("hello queue world");
}
});
}

public static void main(String[] args)
{
ApplicationContext appContext = new FileSystemXmlApplicationContext("spring-jms.xml");
JmsQueueSender jmsSender = (JmsQueueSender)appContext.getBean("jmsQueueSender");
jmsSender.simpleSend();
}
}
2.ExampleListener,用于接受消息,他是一个Message Driven Pojo.
package com.sitinspring.springjms;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class ExampleListener implements MessageListener
{

public void onMessage(Message message)
{
//org.springframework.jms.listener.DefaultMessageListenerContainer102
if (message instanceof TextMessage)
{
System.out.print("I have received a msg:");
try
{
System.out.println(((TextMessage) message).getText());
} catch (JMSException ex)
{
throw new RuntimeException(ex);
}
} else
{
throw new IllegalArgumentException(
"Message must be of type TextMessage");
}
}
}3.配置文件spring-jms.xml,所有配置均在其中.
值得注意的是标有102处,如果你使用的是DefaultMessageListenerContainer,你将为异常所困扰.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- JMS 配置-->
<bean id="jmsQueueSender"
class="com.sitinspring.springjms.JmsQueueSender">
<property name="connectionFactory" ref="connectionFactory" />
<property name="queue" ref="destination" />
</bean> 
<!-- and this is the attendant message listener container -->
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer102">
<property name="connectionFactory" ref="connectionFactory" />
<property name="concurrentConsumers" value="5" />
<property name="destination" ref="destination" />
<property name="messageListener" ref="messageListener" />
</bean>
<!-- this is the Message Driven POJO (MDP) -->
<bean id="messageListener" class="com.sitinspring.springjms.ExampleListener" />
<bean id="connectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>MyJMSConnectionFactory</value>
</property>
<property name="jndiTemplate">
<ref local="jndiTemplate"></ref>
</property>
</bean>
<bean id="destination"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>MyJMSQueue</value>
</property>
<property name="jndiTemplate">
<ref local="jndiTemplate"></ref>
</property>
</bean>
<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref local="connectionFactory" />
</property>
<property name="defaultDestination">
<ref local="destination" />
</property>
</bean>
<!-- JNDI 配置 -->
<bean id="jndiTemplate"
class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
t3://localhost:7001
</prop>
<prop key="java.naming.factory.url.pkgs">
weblogic.jndi.factories
</prop>
</props>
</property>
</bean>
</beans>
程序下载(程序用到的jar请自行添加,主要是Weblogic.jar和Spring.jar及jakatar commons的一些包):
http://www.blogjava.net/Files/sitinspring/SpringJMS20070910171622.rar
参考资料下载:
Spring2.0的参考手册(两个文件下载到同一目录再解压)
http://www.blogjava.net/Files/junglesong/spring2.0_ref.part1.rar
http://www.blogjava.net/Files/junglesong/spring2.0_ref.part2.rar
曾经的这一天...
- » 2007年: 【转贴】表格特效整理
- » 2007年: 【整理】使用CSS隐藏和显式页面单元
- » 2007年: 【转贴】曾国藩语录
- » 2007年: 【转贴】中国古代百句经典名言
- » 2007年: 【转贴】修身格言集锦100条
- » 2007年: 【转贴】人脉存折--成功的轨迹
- » 2007年: 【转贴】英文写作佳句300例
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
