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. 第一个Eureka程序,Eureka Client的自启动原理和简要过程

    https://blog.csdn.net/u011531425/article/details/81675289 在之前的Spring Cloud Config的基础上,搭建简单的Eureka Se ...

  2. Shiro+CAS

    参考链接: CAS实现单点登录SSO执行原理探究:http://blog.csdn.net/javaloveiphone/article/details/52439613 单点登录CAS技术概述:ht ...

  3. 第17课 类型萃取(1)_基本的type_traits

    1. type_traits类型萃取 (1)type_traits通过定义一些结构体或类,并利用模板类特化和偏特化的能力,给类型赋予一些特性,这些特性根据类型的不同而异.在程序设计中可以使用这些tra ...

  4. web socket client

    <!DOCTYPE HTML> <html> <head> <title>My WebSocket</title> </head> ...

  5. MYSQL5.7实时同步数据到TiDB

    操作系统:CentOS7 mysql版本:5.7 TiDB版本:2.0.0 同步方法:使用TiDB提供的工具集进行同步 说明: 单机mysql同步时,可以直接使用binlog同步, 但mysql集群进 ...

  6. form转化json

    ;(function($){ /** * 依赖jquery-1.4.2 * 依赖jquery.json-2.2,参考http://code.google.com/p/jquery-json/ * 用于 ...

  7. (5)修改Linux的基本配置

    **IP地址配置,最简单的方法:在命令行运行setup,按照提示修改即可. 1.修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=serv ...

  8. 03 字符串常用操作方法及For 循环

    字符串常用操作 s = 'alexWUsir' s1 = s.capitalize() #首字母大写 print(s1) #Alexwusir s2 = s.upper() #全部大写 print(s ...

  9. threading join用法

    join():在子线程完成运行之前,这个子线程的父线程将一直被阻塞 import threading #线程import time def Beijing(n): print('Beijing tim ...

  10. python练习题_02

    #1.有两个列表 l1=[11,22,33] l2=[22,33,44] #a.获取内容相同的元素列表 l3=[] for i in l1: if i in l2: l3.append(i) prin ...