zoukankan      html  css  js  c++  java
  • 【ActiveMQ入门-9】ActiveMQ学习-与Spring集成2

    概述:

    下面将介绍如何在Spring下集成ActiveMQ
    消费者:同步接收;
    目的地:Queue



    环境:

    共5个文件
    1. Receiver.java
    2. ReceiverTest.java
    3. Sender.java
    4. SenderTest.java
    5. applicationContext.xml
    使用的jar包如下:


    源文件:

    Receiver.java
    1. package com.ll.springActiveMQ2;
    2. import javax.jms.JMSException;
    3. import javax.jms.MapMessage;
    4. import org.springframework.jms.core.JmsTemplate;
    5. import org.springframework.jms.support.JmsUtils;
    6. public class Receiver {
    7. private JmsTemplate jmsTemplate;
    8. public JmsTemplate getJmsTemplate() {
    9. return jmsTemplate;
    10. }
    11. public void setJmsTemplate(JmsTemplate jmsTemplate) {
    12. this.jmsTemplate = jmsTemplate;
    13. }
    14. /**
    15. * 构造函数
    16. */
    17. public Receiver() {
    18. }
    19. public String receiveMessage() {
    20. String my = "";
    21. MapMessage message = (MapMessage) jmsTemplate.receive();
    22. try {
    23. my = message.getString("lastname");
    24. } catch (JMSException e) {
    25. throw JmsUtils.convertJmsAccessException(e);
    26. }
    27. return my;
    28. }
    29. }

    ReceiverTest.java

    1. package com.ll.springActiveMQ2;
    2. import org.springframework.context.ApplicationContext;
    3. import org.springframework.context.support.ClassPathXmlApplicationContext;
    4. public class ReceiverTest {
    5. public static void main(String[] args) {
    6. ApplicationContext context = new ClassPathXmlApplicationContext(
    7. "applicationContext.xml");
    8. Receiver receiver = (Receiver) context.getBean("receiver");
    9. System.out.print("接收到消息:" + receiver.receiveMessage());
    10. }
    11. }

    Sender.java

    1. package com.ll.springActiveMQ2;
    2. import javax.jms.JMSException;
    3. import javax.jms.MapMessage;
    4. import javax.jms.Message;
    5. import javax.jms.Session;
    6. import org.springframework.jms.core.JmsTemplate;
    7. import org.springframework.jms.core.MessageCreator;
    8. public class Sender {
    9. private JmsTemplate jmsTemplate;
    10. public JmsTemplate getJmsTemplate() {
    11. return jmsTemplate;
    12. }
    13. public void setJmsTemplate(JmsTemplate jmsTemplate) {
    14. this.jmsTemplate = jmsTemplate;
    15. }
    16. public void sendInfo() {
    17. jmsTemplate.send(new MessageCreator() {
    18. public Message createMessage(Session session) throws JMSException {
    19. MapMessage message = session.createMapMessage();
    20. message.setString("lastname", "科比");
    21. return message;
    22. }
    23. });
    24. }
    25. }

    SenderTest.java

    1. package com.ll.springActiveMQ2;
    2. import org.springframework.context.ApplicationContext;
    3. import org.springframework.context.support.ClassPathXmlApplicationContext;
    4. public class SenderTest {
    5. public static void main(String[] args) {
    6. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    7. Sender sender = (Sender) context.getBean("sender");
    8. sender.sendInfo();
    9. System.out.println("消息已发送...");
    10. }
    11. }


    配置文件:

    applicationContext.xml

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans
    5. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    6. <!--创建连接工厂 -->
    7. <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    8. <property name="brokerURL" value="tcp://localhost:61616"></property>
    9. </bean>
    10. <!-- 声明ActiveMQ消息目标,目标可以是一个队列,也可以是一个主题ActiveMQTopic -->
    11. <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
    12. <constructor-arg index="0" value="com.ll.springActiveMQ2"></constructor-arg>
    13. </bean>
    14. <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    15. <property name="connectionFactory" ref="connectionFactory"></property>
    16. <property name="defaultDestination" ref="destination"></property>
    17. <property name="receiveTimeout" value="600"></property>
    18. </bean>
    19. <!-- 发送者/生产者 -->
    20. <bean id="sender" class="com.ll.springActiveMQ2.Sender">
    21. <property name="jmsTemplate" ref="jmsTemplate"></property>
    22. </bean>
    23. <!-- 接收者/消费者 -->
    24. <bean id="receiver" class="com.ll.springActiveMQ2.Receiver">
    25. <property name="jmsTemplate" ref="jmsTemplate"></property>
    26. </bean>
    27. </beans>



    运行结果:













  • 相关阅读:
    Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题 swfUpload多文件上传
    对ExtJS4应用 性能优化的几点建议
    Extjs4中用combox做下拉带图片的下拉框
    当你的才华还撑不起你的野心时,就应该静下心来学习(转)
    占位符行为 PlaceHolderBehavior 的实现以及使用
    一个简单的TabItem样式。
    WPF实现Twitter按钮效果(转)
    模仿36。杀毒~button(转)
    WPF自适应可关闭的TabControl 类似浏览器的标签页(转)
    WPF绘制简单常用的Path(转)
  • 原文地址:https://www.cnblogs.com/ssslinppp/p/4468327.html
Copyright © 2011-2022 走看看