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. 手动卸载CAD 删除残留文件 清理遗留的文件

    手动卸载基于 AutoCAD 产品的文件,从而删除所有残留文件. 清理安装失败所遗留的文件. 一.解决方案: 通过"控制面板"卸载该程序. 删除以下位置残留的 AutoCAD 文件 ...

  2. rabbitmq (三) 发布/订阅

    rabbitmq的目的并不是让生产者把消息直接发到队列里面去, 这样不能实现解耦的目的,也不利于程序的扩展. 所以就有交换机(exchanges)的概念. 交换机有几种类型:direct, topic ...

  3. java中随机二维数组中寻找最大值并输出坐标

    public static void main(String[] args) { int x=0; int y=0; int a[][]=new int[5][5]; int max=-Integer ...

  4. centos7安装mysql客户端

    1.判断是否已安装 [root@k8s-master master]# which mysql /usr/bin/which: no mysql in (/usr/local/sbin:/usr/lo ...

  5. 第二篇*2、Python字符串格式化

    1.字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 1)百分号方式 %[(name)][flags][width].[precision]typecode (nam ...

  6. js:捕获冒泡和事件委托

    一.事件流(捕获,冒泡)   事件流:指从页面中接收事件的顺序,有冒泡流和捕获流. 当页面中发生某种事件(比如鼠标点击,鼠标滑过等)时,毫无疑问子元素和父元素都会接收到该事件,可具体顺序是怎样的呢?冒 ...

  7. HashMap理解

    HashMap中Capacity为数组长度,默认大小为16,size为元素个数,loadFactor为size/capacity,默认为0.75,当存储的元素个数size大于等于capacity乘以0 ...

  8. Fiddler使用

    1.下载安装 百度下载后,傻瓜式安装. 2.设置 Tools->options->https->选中"Decrpt HTTPS traffic"(Fiddler就 ...

  9. Delphi TXLSReadWriteII2 带的demo中直接编辑XLS文件的例子

    unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ...

  10. Hibernate 再接触 性能优化

    Sessionclear 否则session缓存里越来越多 Java有内存泄露吗? 在语法中没有(垃圾自动回收) 但是在实际中会有 比如读文件没有关什么的 1+N问题 解决方法:把fetch设置为la ...