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. [UE4]Scale Box:缩放容器

    一.Scale Box只能有一个子控件,再拖放一控件进去是不行的. 二.Scale Box缩放保持长宽比例 三. Scale Box.Strectching.Strectch:拉伸设置.  Scale ...

  2. [UnityAPI]DataUtility类

    测试环境: 准备三张图片a,b,c,其中a,b打在同一图集,c不打图集,a,b如下: 测试脚本: using UnityEngine; using UnityEngine.Sprites; publi ...

  3. windows注册表解析说明

    https://www.cnblogs.com/wfq9330/p/9176654.html

  4. EF 6.x实现dynamic动态查询

    利用SqlQuery实现动态查询 public static IEnumerable<dynamic> SqlQueryDynamic(this DbContext db, string ...

  5. 一个linux bbr存在的调用顺序bug

    最近跟踪bbr的状态转换的代码,发现一个问题: [,min_rtt_us=,full_bw=,cycle_idx=,pacing_gain=,cwnd_gain=,rtt_cnt= [,min_rtt ...

  6. Android Studio2.0 教程从入门到精通Windows版 - 入门篇

    http://www.open-open.com/lib/view/open1468121363300.html 本文转自:深度开源(open-open.com)原文标题:Android Studio ...

  7. linux学习资料收藏

      http://blog.chinaunix.net/uid/10167808/abstract/1.html?year=2008     http://linux.linuxidc.com/ind ...

  8. ceph结构详解

    引言 那么问题来了,把一份数据存到一群Server中分几步? Ceph的答案是:两步. 计算PG 计算OSD 计算PG 首先,要明确Ceph的一个规定:在Ceph中,一切皆对象. 不论是视频,文本,照 ...

  9. ubuntu安装jdk,maven,tomcat

    ubuntu16.04安装jdk8 -jdk 检查是否安装成功 java -version 出现如上信息即安装成功 安装maven,先去官网下载指定版本的maven,个人使用apache-maven- ...

  10. C# dns.gethostentry()获取失败,提示不存在主机

    传入参数domain有误. 如果是域名,可以解析.如果是局域ip可以解析. 如果是外网,解析不成功. 解决方法: 判断传入参数是域名还是ip,如果是域名,则使用dns.gethostentry(dom ...