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

    概述:

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



    环境:

    主要包括4个文件:
    1. HelloSender.java;
    2. JMSTest.java;
    3. ProxyJMSConsumer.java;
    4. applicationContext-jms.xml(配置文件);
    需要使用的jar包如下:

    源文件:

    HelloSender.java
    1. package com.ll.springActiveMQ1;
    2. import javax.jms.Destination;
    3. import javax.jms.JMSException;
    4. import javax.jms.Message;
    5. import javax.jms.Session;
    6. import org.springframework.context.ApplicationContext;
    7. import org.springframework.context.support.ClassPathXmlApplicationContext;
    8. import org.springframework.jms.core.JmsTemplate;
    9. import org.springframework.jms.core.MessageCreator;
    10. public class HelloSender {
    11. /**
    12. * @param args
    13. * jmsTemplate和destination都是在spring配置文件中进行配制的
    14. * Sender只使用了配置文件中的jmsFactory,jmsTemplate,还有destination这三个属性
    15. */
    16. public static void main(String[] args) {
    17. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-jms.xml");
    18. JmsTemplate template = (JmsTemplate) applicationContext.getBean("jmsTemplate");
    19. Destination destination = (Destination) applicationContext.getBean("destination");
    20. template.send(destination, new MessageCreator() {
    21. public Message createMessage(Session session) throws JMSException {
    22. return session.createTextMessage("发送消息:Hello ActiveMQ Text Message2!");
    23. }
    24. });
    25. System.out.println("成功发送了一条JMS消息");
    26. }
    27. }

    ProxyJMSConsumer.java

    1. package com.ll.springActiveMQ1;
    2. import javax.jms.Destination;
    3. import javax.jms.TextMessage;
    4. import org.springframework.context.ApplicationContext;
    5. import org.springframework.context.support.ClassPathXmlApplicationContext;
    6. import org.springframework.jms.core.JmsTemplate;
    7. /**
    8. * JMS消费者 消息题的内容定义 消息对象 接收消息对象后: 接收到的消息体*
    9. * <p>
    10. */
    11. public class ProxyJMSConsumer {
    12. /**
    13. * 构造函数
    14. */
    15. public ProxyJMSConsumer() {
    16. }
    17. /**
    18. *
    19. */
    20. private JmsTemplate jmsTemplate;
    21. public JmsTemplate getJmsTemplate() {
    22. return jmsTemplate;
    23. }
    24. public void setJmsTemplate(JmsTemplate jmsTemplate) {
    25. this.jmsTemplate = jmsTemplate;
    26. }
    27. /**
    28. * 监听到消息目的有消息后自动调用onMessage(Message message)方法
    29. */
    30. public void recive() {
    31. ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
    32. "applicationContext-jms.xml");
    33. Destination destination = (Destination) applicationContext
    34. .getBean("destination");
    35. while (true) {
    36. try {
    37. //同步接收
    38. TextMessage txtmsg = (TextMessage) jmsTemplate
    39. .receive(destination);
    40. if (null != txtmsg) {
    41. System.out.println("[DB Proxy] " + txtmsg);
    42. System.out.println("[DB Proxy] 收到消息内容为: "
    43. + txtmsg.getText());
    44. } else {
    45. break;
    46. }
    47. } catch (Exception e) {
    48. e.printStackTrace();
    49. }
    50. }
    51. }
    52. }

    JMSTest.java

    1. package com.ll.springActiveMQ1;
    2. import org.apache.commons.logging.Log;
    3. import org.springframework.context.ApplicationContext;
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;
    5. public class JMSTest {
    6. /**
    7. * @param args
    8. */
    9. public static void main(String[] args) {
    10. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-jms.xml");
    11. ProxyJMSConsumer proxyJMSConsumer = (ProxyJMSConsumer) applicationContext.getBean("messageReceiver");
    12. proxyJMSConsumer.recive();
    13. System.out.println("初始化消息消费者");
    14. }
    15. }


    配置文件:

    applicationContext-jms.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" xmlns:context="http://www.springframework.org/schema/context"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans
    5. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    6. http://www.springframework.org/schema/context
    7. http://www.springframework.org/schema/context/spring-context-2.5.xsd"
    8. default-autowire="byName">
    9. <!-- 配置connectionFactory -->
    10. <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
    11. destroy-method="stop">
    12. <property name="connectionFactory">
    13. <bean class="org.apache.activemq.ActiveMQConnectionFactory">
    14. <property name="brokerURL">
    15. <value>tcp://127.0.0.1:61616</value>
    16. </property>
    17. </bean>
    18. </property>
    19. <property name="maxConnections" value="100"></property>
    20. </bean>
    21. <!-- Spring JMS Template -->
    22. <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    23. <property name="connectionFactory">
    24. <ref local="jmsFactory" />
    25. </property>
    26. <property name="defaultDestinationName" value="subject" />
    27. <!-- 区别它采用的模式为false是p2p为true是订阅 -->
    28. <property name="pubSubDomain" value="true" />
    29. </bean>
    30. <!-- 发送消息的目的地(一个队列) -->
    31. <bean id="destination" class="org.apache.activemq.command.ActiveMQTopic">
    32. <!-- 设置消息队列的名字 -->
    33. <constructor-arg index="0" value="subject" />
    34. </bean>
    35. <bean id="messageReceiver" class="com.ll.springActiveMQ1.ProxyJMSConsumer">
    36. <property name="jmsTemplate" ref="jmsTemplate"></property>
    37. </bean>
    38. </beans>



    运行顺序:
    首先运行JMSTest,然后运行HelloSender。


    运行结果:



















    附件列表

    • 相关阅读:
      node
      github
      [模块] pdf转图片-pdf2image
      python 15 自定义模块 随机数 时间模块
      python 14 装饰器
      python 13 内置函数II 匿名函数 闭包
      python 12 生成器 列表推导式 内置函数I
      python 11 函数名 迭代器
      python 10 形参角度 名称空间 加载顺序
      python 09 函数参数初识
    • 原文地址:https://www.cnblogs.com/ssslinppp/p/4468070.html
    Copyright © 2011-2022 走看看