JMS+spring中的简单应用(demo)
来源:互联网 发布:门窗软件 编辑:程序博客网 时间:2024/05/16 06:54
JMS两个主要概念:
消息中介消息目标:
1、队列
2、主题两种传递模式:
点对点消息传递模型:每个消息都有一个发送者和一个消费者发送者-〉队列-〉接受者
发布-订阅者消息传递模型:一条订阅信息,可以发送给多个订阅者
发布者-〉主题-〉订阅者们
JMS优点:
不用等待面向消息
位置独立
确保投送
ActiveQM:开源消息中介。
Spring中安装ActiveMQ
创建连接工厂:
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><property name = "brokerURL" value="tcp://localhost:61616"/>
</bean>
声明ActiveMQ消息目标:消息目标可以是队列,也可以是主题。
队列:
<bean id="mqiqeDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="mqiqe.queue"/>
</bean>
主题:
<bean id="mqiqeDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg index="0" value="mqiqe.topic"/>
</bean>
使用JMS模板:
JmsTemplate是Spring消除冗长和重复JMS代码解决方案。<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<!--注入默认消息目标-->
<property name="defaultDestination" ref="mqiqeDestination"/>
</bean>
发送消息:
jmsTemplate.send(destination, messageCreator);方法发送消息 destination:目标 ,messageCreator: 消息。发送者——〉send(JmsTemplate)——〉队列/主题
消费消息:
MapMessage message=(MapMessage)jmsTemplate.receive(destination);方法接受消息 destination:目标 ,MapMessage: 消息。队列/主题-〉(recive)JmsTemplate-〉Receiver
Demo代码
spring配置文件:
<!-- ActiveMQ --><bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name = "brokerURL" value="tcp://localhost:61616"/></bean><bean id="mqiqeDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg index="0" value="mqiqe.queue"/></bean><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <property name="defaultDestination" ref="mqiqeDestination"/></bean><bean id="mqiqeSend" class="com.activemq.MqiqeSendImpl"> <property name="jmsTemplate" ref="jmsTemplate"/></bean><bean id="mqiqeReceiver" class="com.activemq.MqiqeReceiverImpl"> <property name="jmsTemplate" ref="jmsTemplate"/></bean>
接口文件:
package com.activemq;import javax.jms.JMSException;public interface IMqiqeReceiver {public String reveiver() throws JMSException;}package com.activemq;public interface IMqiqeSend {public void send(final String messageStr);}
类文件:
package com.activemq;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MapMessage;import org.springframework.jms.core.JmsTemplate;public class MqiqeReceiverImpl implements IMqiqeReceiver {@Overridepublic String reveiver() throws JMSException {System.out.println("开始接受信息。。。");MapMessage message = (MapMessage) jmsTemplate.receive();String str = "lastName:" + message.getString("lastName") + "firstName:"+ message.getString("firstName") + "messageStr:"+ message.getString("messageStr");System.out.println("接受完信息。。。");return str;}private JmsTemplate jmsTemplate;/*** @param jmsTemplate* the jmsTemplate to set*/public void setJmsTemplate(JmsTemplate jmsTemplate) {this.jmsTemplate = jmsTemplate;}}
package com.activemq;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MapMessage;import javax.jms.Message;import javax.jms.Session;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.core.MessageCreator;public class MqiqeSendImpl implements IMqiqeSend {@Overridepublic void send (final String motorist){jmsTemplate.send(new MessageCreator(){public Message createMessage(Session session) throws JMSException{MapMessage message =session.createMapMessage();message.setString("lastName", "fg\n");message.setString("firstName", "mqiqe\n");message.setString("messageStr", motorist);return message;}});}private JmsTemplate jmsTemplate;/*** @param jmsTemplate the jmsTemplate to set*/public void setJmsTemplate(JmsTemplate jmsTemplate) {this.jmsTemplate = jmsTemplate;}}
测试文件:
package com.activemq;import javax.jms.JMSException;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestActiveMQ {static String context = null;static ApplicationContext applicationContext;static {context = "applicationContext.xml";}public static void main(String[] arg) {System.out.println("start---");applicationContext = new ClassPathXmlApplicationContext(context);IMqiqeSend demoSend = (IMqiqeSend) applicationContext.getBean("mqiqeSend");IMqiqeReceiver mqiqeReceiver= (IMqiqeReceiver)applicationContext.getBean("mqiqeReceiver");System.out.println(demoSend);demoSend.send("hello,world!");System.out.println("send Message:hello,world!");try {System.out.println(mqiqeReceiver.reveiver());} catch (JMSException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("end");}}
(注:在运行之前要先运行ActiveMQ)
- JMS+spring中的简单应用(demo)
- JMS + ActiveMQ 简单的demo
- Spring JMS应用
- Spring JMS应用
- jms的简单应用
- Weblogic Jms简单应用
- 用Spring快速开发jms应用(JBOSS服务器)
- 用Spring快速开发jms应用(JBOSS服务器)
- 用Spring快速开发jms应用(JBOSS服务器)
- 用Spring快速开发jms应用(JBOSS服务器)
- 用Spring快速开发jms应用(JBOSS服务器)
- 用Spring快速开发jms应用(JBOSS服务器)
- Spring Security简单Demo
- spring security简单demo .
- Spring Httpinvoker简单Demo
- spring mvc简单demo
- spring简单的demo
- Spring AOP 简单demo
- 数据库在升级之后创建,v$version和DBA_REGISTRY的输出不一致
- 有趣的地方,有趣的东西!
- spring自动扫描机制
- oracle数据类型
- 第五周任务(二)
- JMS+spring中的简单应用(demo)
- 修饰符
- apache配置故障总结
- eclipse项目出错却没有提示的解决方法
- ESX服务器开启22端口
- 链表的就地逆置
- 开源面向对象数据库 db4o 之旅,第 2 部分: db4o 查询方式
- 七个让你的网页更受欢迎的方法
- 改变自己的128种方法,教你变得更优秀