2019独角兽企业重金招聘Python工程师标准>>>

  1. 依赖的jar

    maven的依赖

    <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.14.0</version>
    </dependency>
    <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-pool</artifactId><version>5.14.0</version>
    </dependency>
    <!--spring -->
    <dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>4.2.3.RELEASE</version>
    </dependency>
  2. 生产者的XML配置文件

    <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 --><bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><!-- ActiveMQ服务地址 --><property name="brokerURL" value="${mq.brokerURL}" /><property name="userName" value="${mq.userName}"></property><property name="password" value="${mq.password}"></property> </bean><!-- ActiveMQ为我们提供了一个PooledConnectionFactory,通过往里面注入一个ActiveMQConnectionFactory可以用来将Connection、Session和MessageProducer池化,这样可以大大的减少我们的资源消耗。要依赖于 activemq-pool包--><bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"><property name="connectionFactory" ref="targetConnectionFactory" /><property name="maxConnections" value="${mq.pool.maxConnections}" /></bean><!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory --><bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"><!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory --><property name="targetConnectionFactory" ref="pooledConnectionFactory" /></bean><!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --><!-- 队列模板 ,对JMS协议的实现--><bean id="activeMqJmsTemplate" class="org.springframework.jms.core.JmsTemplate">  <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->  <property name="connectionFactory" ref="connectionFactory"/>  <property name="defaultDestinationName" value="${queueName}"></property></bean> 
  3. 生产者的简单用例

    import javax.annotation.Resource;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.Session;import org.springframework.jms.core.JmsTemplate;
    import org.springframework.jms.core.MessageCreator;
    import org.springframework.stereotype.Service;import longload.edu.demo.modal.Mail;@Service("producer")
    public class Producer {@Resourceprivate JmsTemplate jmsTemplate;/*** 发送消息* @param mail*/public void sendMessage(final Mail mail){jmsTemplate.send(new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {/*** 创建一个消息,常用的有createObjectMessage与createTextMessage*/return session.createObjectMessage(mail);}});}
    }
  4. 消费者XML配置

    在生产者的XML配置文件 的基础上增加下面内容

    <!--这个是sessionAwareQueue目的地 --><bean id="sessionAwareQueue" class="org.apache.activemq.command.ActiveMQQueue"><constructor-arg><value>${queueName}</value></constructor-arg></bean><!-- 可以获取session的MessageListener,需要实现SessionAwareMessageListener类 --><bean id="consumerSessionMessageListener" class="longload.edu.demo.listener.ConsumerSessionMessageLister"></bean><bean id="sessionAwareListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory" /><!-- 监听的队列 --><property name="destination" ref="sessionAwareQueue" /><!-- 指定接收消息的消息监听--><property name="messageListener" ref="consumerSessionMessageListener" /> </bean>

    如果需要使用下面来接收一个已序列化的对象(createTextMessage不需要)

    ActiveMQObjectMessage msg = (ActiveMQObjectMessage) message;

    需要增加一个可信任的包路径或者信任所有,需要对targetConnectionFactory增加一个trustAllPackages或者trustedPackages属性

    <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><!-- ActiveMQ服务地址 --><property name="brokerURL" value="${mq.brokerURL}" /><property name="userName" value="${mq.userName}"></property><property name="password" value="${mq.password}"></property> <!-- 信任所有的包路径 --><!-- <property name="trustAllPackages" value="true" /> --><!-- 信任指定包路径的对象 --><property name="trustedPackages"><list><value>longload.edu.demo.modal</value></list></property>
    </bean>
  5. 消费者简单用例

    package longload.edu.demo.listener;import javax.annotation.Resource;
    import javax.jms.Destination;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.Session;import org.apache.activemq.command.ActiveMQObjectMessage;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.jms.core.JmsTemplate;
    import org.springframework.jms.listener.SessionAwareMessageListener;import longload.edu.demo.modal.Mail;/*** @author longload* @date 2016年8月13日下午8:32:26*/
    public class ConsumerSessionMessageLister implements SessionAwareMessageListener<Message>{private Logger LOGGER=LoggerFactory.getLogger(this.getClass());@Resourceprivate JmsTemplate jmsTemplate;@Overridepublic void onMessage(Message message, Session session) throws JMSException {LOGGER.info("==>receive message:" + message);ActiveMQObjectMessage msg = (ActiveMQObjectMessage) message;Mail mail = (Mail) msg.getObject();LOGGER.info("subject:"+mail.getSubject());}
    }
    
  6. 配置文件

    ## MQ address 链接地址
    mq.brokerURL=tcp\://192.168.48.129\:61616
    # 用户名和密码
    mq.userName=longload
    mq.password=test.123
    mq.pool.maxConnections=10
    #queueName 队列名称,指定发送或者接收的队列
    queueName=longload.mq.v1

转载于:https://my.oschina.net/longload/blog/731424

ActiveMQ开发配置与用例相关推荐

  1. activemq主从配置_使用ActiveMQ –具有故障转移协议的“主/从”配置

    activemq主从配置 介绍 ActiveMQ代理往往是企业中消息传递基础结构的核心部分. 此消息传递基础结构的高度可用性和可伸缩性至关重要. 请阅读此链接 ,以了解有关创建经纪人网络以支持各种用例 ...

  2. ActiveMQ安装配置

    ActiveMQ安装配置 官方网站: http://activemq.apache.org 环境: CentOS7.2 apache-activemq-5.14.1 JDK安装略 一.安装active ...

  3. ActiveMQ开发简明教程

    资源链接 ActiveMQ入门实例 activemq-5141-release下载 入门文档(英文,官方) 图解ActiveMQ 概念 ActiveMQ特性 ActiveMQ特性详细介绍 Active ...

  4. Go 学习笔记(1)— Ubuntu 系统 Go 环境搭建、VS Code 配置 Go 开发环境、VS Code 远程开发配置

    1. 安装说明 Ubuntu 下直接安装 Go 1.11 版本编译器时需要依赖 Go 1.4 版本.所以如果在使用 apt-get install go安装时参考以下链接安装:https://blog ...

  5. Clion 远程开发 配置

    文章目录 1. 增加远端服务工具 2. 配置远端服务器 3. 配置编译选项 4. 设置远端开发路径 Clion作为C/C++语言友好的IDE,除了高效的代码索引 以及 基本的本地开发 能力之外还需要有 ...

  6. idea配置jfinal_intellij idea安装与配置(Java开发配置篇)

    一.maven配置 在configure->settings的搜索框中输入maven,然后入下图所示,修改maven主目录.maven配置文件.maven本地仓库地址 二.SVN设置 在搜索框中 ...

  7. Netbeans6.8使用手札(NetBeans6.8中Java、php、C/C++开发配置)

    声明:本手札是基于Windows XP操作系统下的配置 首先当然是在Netbeans官网上下载Netbeans6.7: 下载地址:http://zh-cn.netbeans.org/,我选择的是功能最 ...

  8. Script Lab 续:为 Officejs 开发配置 VSCode 环境

    垫场AA:深度:从 Office 365 新图标来看微软背后的设计新理念 -------------------------------------------------- 前期01:尝试:Scri ...

  9. 数据库连接池的选择及其开发配置

    转载自  数据库连接池的选择及其开发配置 一.数据库连接池概述 数据库连接的建立是一种耗时.性能低.代价高的操作,频繁的数据库连接的建立和关闭极大的影响了系统的性能.数据库连接池是系统初始化过程中创建 ...

最新文章

  1. 辩证看待 iostat
  2. 每天一命令 git checkout
  3. CV08-数据预处理与数据增强
  4. 阿米洛键盘取消win_【机械键盘】2020年双十二那些值得购买的机械键盘推荐
  5. Mysql(1)——服务端与客户端建立连接
  6. chrome v46渲染partial html内容的一个问题
  7. 脚本自动定时打开链接_自动化构建系统
  8. Ubuntu常用软件安装(小集合)
  9. 【Flink】Flink检查点时间太小导致Exceeded checkpoint tolerable failure threshould
  10. 软件测试三种错误的是,软件测试中的三种排错方法(知识篇)
  11. XILINX FPGA电源设计指南
  12. AutoCAD.net 自定义窗体及面板与CAD交互时的焦点切换问题(C#)
  13. golang微信小程序爬虫教程offer秀
  14. xy苹果助手安装_xy苹果助手
  15. 【AWVS】python调AWVS接口 新建扫描并导出扫描报告 [自定义扫描报告](三)
  16. DataTables warning:table id = TableDate: Cannot reinitialise DataTable的解决办法
  17. 爬取古诗文网的推荐古诗
  18. Spring全家桶(四)Bean的生命周期
  19. CreateFont(MFC)字体设计
  20. DocuCentre SC2020 打印机连接

热门文章

  1. python图层_Python叠加矩形框图层2种方法及效果
  2. python基础入门笔记_Python基础入门笔记:函数
  3. 删除后别人的微信号变成wxid_安卓版微信更新了,微信号终于可以修改了?
  4. excel VB代码
  5. mybatis 里面concat()函数t模糊查询
  6. python模型预测_《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程...
  7. window安装python3后怎么用pyspark_pyspark:连接spark集群Windows环境搭建
  8. qgis 图片_QGIS教程09QGIS中如何制作萤火虫地图?
  9. 组件服务-计算机-我的电脑出现红色向下箭头的解决办法
  10. ggplot2作图4