SpringBoot实现

引入jar包

<dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-activemq</artifactId>

</dependency>

配置application.properties

spring.activemq.broker-url=tcp://192.168.114.129:61616

spring.activemq.in-memory=true

spring.activemq.enabled=false

spring.jms.pub-sub-domain=true

创建activemq配置文件类

@EnableJms

@Configuration

public class ActiveMQConfig {

@Bean

public Queue queue(){

return new ActiveMQQueue("queue1");

}

@Bean

public RedeliveryPolicy redeliveryPolicy(){

RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();

//是否在每次尝试重新发送失败后,增长这个等待时间

redeliveryPolicy.setUseExponentialBackOff(true);

//重发次数,默认为6次   这里设置为10次

redeliveryPolicy.setMaximumRedeliveries(6);

//重发时间间隔,默认为1秒

redeliveryPolicy.setInitialRedeliveryDelay(1);

//第一次失败后重新发送之前等待500毫秒,第二次失败再等待500 * 2毫秒,这里的2就是value

redeliveryPolicy.setBackOffMultiplier(1);

//是否避免消息碰撞

redeliveryPolicy.setUseCollisionAvoidance(false);

//设置重发最大拖延时间-1 表示没有拖延只有UseExponentialBackOff(true)为true时生效

redeliveryPolicy.setMaximumRedeliveryDelay(1000);

return redeliveryPolicy;

}

@Bean

ActiveMQConnectionFactory activeMQConnectFactory(@Value("${spring.activemq.broker-url}")String url,RedeliveryPolicy redeliveryPolicy){

ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("admin","admin",url);

activeMQConnectionFactory.setRedeliveryPolicy(redeliveryPolicy);

return activeMQConnectionFactory;

}

@Bean

public JmsTemplate jmsTemplate(ActiveMQConnectionFactory activeMQConnectionFactory,Queue queue){

JmsTemplate jmsTemplate = new JmsTemplate();

jmsTemplate.setDeliveryMode(1);//进行持久化配置 1表示非持久化,2表示持久化

jmsTemplate.setConnectionFactory(activeMQConnectionFactory);

jmsTemplate.setDefaultDestination(queue);//此处可不设置默认,在发送消息时也可设置队列

jmsTemplate.setSessionAcknowledgeMode(1);//客户端签收模式

return jmsTemplate;

}

@Bean

public JmsTransactionManager jmsTransactionManager(ActiveMQConnectionFactory activeMQConnectionFactory){

JmsTransactionManager jmsTransactionManager = new JmsTransactionManager();

jmsTransactionManager.setConnectionFactory(activeMQConnectionFactory);

return jmsTransactionManager;

}

//定义一个消息监听器连接工厂,这里定义的是点对点模式的监听器连接工厂

@Bean(name = "jmsQueueListener")

public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(ActiveMQConnectionFactory activeMQConnectionFactory, JmsTransactionManager jmsTransactionManager){

DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();

factory.setConnectionFactory(activeMQConnectionFactory);

//设置连接数

factory.setConcurrency("1-10");

//重连间隔时间

//factory.setRecoveryInterval(1000L);

//factory.setSessionAcknowledgeMode(1);

factory.setTransactionManager(jmsTransactionManager);

return factory;

}

}

创建生产者类

@Service("producer")

public class Producer {

@Autowired

private JmsMessagingTemplate jMessagingTemplate;

public void sendMessage(Destination destination, final String message){

jMessagingTemplate.convertAndSend(destination, message);

}

}

创建消费者类

@Component

public class Consumer {

@JmsListener(destination = "mytest.queue", containerFactory="jmsQueueListener")

public void receiveQueue(TextMessage textMessage) throws JMSException{

System.out.println("Consumer收到的报文为:"+textMessage.getText());

}

}

测试

@Autowired

private Producer producer;

@Test

public void test01(){

Destination destination = new ActiveMQQueue("mytest.queue");

for(int i=0; i<10; i++){

producer.sendMessage(destination, "my name laowang");

}

}

ActiveMQ_4SpringBoot整合的更多相关文章

  1. [原创]mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  2. kindeditor4整合SyntaxHighlighter,让代码亮起来

    这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换 ...

  3. spring源码分析之freemarker整合

    FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是一款程 ...

  4. FullCalendar应用——整合农历节气和节日

    FullCalendar用来做日程管理功能非常强大,但是唯一不足的地方是没有将中国农历历法加进去,今天我将结合实例和大家分享如何将中国农历中的节气和节日整合到FullCalendar中,从而增强其实用 ...

  5. SAP CRM 将组件整合至导航栏中

    到现在,我们已经可以让组件独立地显示.我们只是运行它.让它显示在Web UI中.让我们把组件整合进导航栏,使我们可以在正常登录Web UI时访问它. 步骤一: 为你的UI组件主窗体创建一个内向插件. ...

  6. Atitit.你这些项目不都是模板吗?不是原创  集成和整合的方式大总结

    Atitit.你这些项目不都是模板吗?不是原创  集成和整合的方式大总结 1.1. 乔布斯的名言:创新即整合(Creativity is just connecting things).1 1.2. ...

  7. github入门到上传本地项目【网上资源整合】

    [在原文章的基础上,修改了描述的不够详细的地方,对内容进行了扩充,整合了网上的一些资料] [内容主要来自http://www.cnblogs.com/specter45/p/github.html#g ...

  8. 三大框架SSH整合

    三大框架SSH整合 -------------------------------Spring整合Hibernate------------------------------- 一.为什么要整合Hi ...

  9. SSH框架整合(代码加文字解释)

    一.创建数据库并设置编码. A) create database oa default character set utf8. 二.MyEclipse工程 A) 在Myeclipse里创建web工程, ...

随机推荐

  1. 常用HDFS操作命令

    前一段时间频繁使用HDFS,又收集到了一些命令,在这儿分享出来,大数据的框架及设计原理方面的理论文章暂时还没有时间总结,后面有时间逐渐整理发出来. 注:在使用命令时,可以使用 hadoop fs,如果 ...

  2. 反序列化和序列化xml使用反射处理节点的属性

    当一个xml中有大量的属性XmlAttribute需要序列化和反序列化,通常需要复制粘贴大量的如下代码,显得很丑陋,而且容易出错: XmlAttribute attr = Doc.CreateAttr ...

  3. 杂谈c.cpp

    Endl确保程序运行前刷新输出(将其立即显示在屏幕上),而’\n’却不能保证 在c++中,是以分号分割的,所以可以把几条代码放在一行,也可以把一条代码放在几行 编译器负责分配和标记内存的细节 C++可 ...

  4. mybatis xml中返回map 参看aiwanpai

    <!-- 指定日期活动被创建次数查询结果数据集--> <resultMap id="countPlayTimesMap" type="HashMap&q ...

  5. Spring MVC 之 请求url 带后缀的情况

    RequestMappingInfoHandlerMapping 在处理http请求的时候, 如果 请求url 有后缀,如果找不到精确匹配的那个@RequestMapping方法.那么,就把后缀去掉, ...

  6. PHP实现JS点击点击定位

    点击class='women' 定位到 class='m=foot'$(".women").on('click',function(){ $("html, body&qu ...

  7. django 开发之前后端分离开发模式

    1. 什么是前后端分离开发的概念: 前端页面运行前端服务器上,负责页面的渲染(静态文件的加载)与跳转 后端代码运行在后端服务器上, 负责数据的处理(提供数据请求的接口) 2. 前后端分离开发碰到的问题 ...

  8. Mac ssh 免密码登录 Mac 或者 Linux

    最近在 Mac上操作另一台 Mac 和 Linux 服务器,每次输密码太麻烦.所以直接设置 ssh 免密码登录,省去输入密码的过程.先在本机执行 ls ~/.ssh 若不存在 id_rsa,id_rs ...

  9. Python3 timeit的用法

    Python3中的timeit模块可以用来测试小段代码的运行时间 其中主要通过两个函数来实现:timeit和repeat,代码如下: def timeit(stmt="pass", ...

  10. 面试加分项---HashMap底层实现原理

    想必大家都知道HashSet和HashMap之间的关系,HashSet是依赖于HashMap的,HashSet集合就是HashMap的key所组成的集合,我们都知道HashMap的value是可以重复 ...