参考文档:
http://haohaoxuexi.iteye.com/blog/1893038
http://www.blogjava.net/chenhui7502/archive/2011/08/28/357457.html
2. 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
">
<bean id="targetConnectionFactory" class="com.tibco.tibjms.TibjmsConnectionFactory">
<property name="serverUrl" value="tcp://localhost:1234"/>
</bean>
<bean id="connectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="targetConnectionFactory" ref="targetConnectionFactory"/>
<property name="username" value="username" />
<property name="password" value="password" />
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
</bean>
<bean id="queueDestination" class="com.tibco.tibjms.TibjmsQueue">
<constructor-arg>
<value>queue.name</value>
</constructor-arg>
</bean>
<bean id="consumerMessageListener" class="euc.demo.emsqueue.ConsumerMessageListener"/>
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="queueDestination" />
<property name="messageListener" ref="consumerMessageListener" />
</bean>
</beans>
3. Send Message的类
package euc.demo.emsqueue;
import javax.annotation.Resource;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.StreamMessage;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
@Component
public class SendEmsQueueMessage {
private JmsTemplate jmsTemplate;
public void sendTextMessage(Destination destination, final String message) {
System.out.println("The producer send a message:" + message);
jmsTemplate.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
}
public void sendStreamMessage(Destination destination, final byte[] content){
System.out.println("The producer send a message:" + new String(content));
jmsTemplate.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
StreamMessage message = session.createStreamMessage();
message.setIntProperty("length", content.length);
message.writeBytes(content);
return message;
}
});
}
public JmsTemplate getJmsTemplate() {
return jmsTemplate;
}
@Resource
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
}
4. 接收message的类
package euc.demo.emsqueue;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;
public class ConsumerMessageListener implements MessageListener {
public void onMessage(Message message) {
if (message instanceof javax.jms.TextMessage) {
TextMessage textMsg = (TextMessage) message;
try {
System.out.println("The receiver received a message:" + textMsg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
else if(message instanceof javax.jms.StreamMessage){
StreamMessage streamMsg = (StreamMessage)message;
try {
int length = message.getIntProperty("length");
byte[] content = new byte[length];
if(streamMsg.readBytes(content)>0)
{
String str = new String(content);
System.out.println("The message length is:" + length);
System.out.println("The receiver received a message:" + str);
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
5. 测试
public static void testEmsQueue() {
ApplicationContext ac = new ClassPathXmlApplicationContext(
"spring-config.xml");
SendEmsQueueMessage sendEmsQueueMessage = (SendEmsQueueMessage) ac.getBean("sendEmsQueueMessage");
Destination destination = (Destination) ac.getBean("queueDestination");
String str = "<?xmlversion=\"1.0\"encoding=\"UTF-8>";
// sendEmsQueueMessage.sendTextMessage(destination,"Text message");
sendEmsQueueMessage.sendStreamMessage(destination, str.getBytes());
}
public static void main(String[] args) {
testEmsQueue();
}