文档章节

ActiveMQ学习之SpringBoot整合ActiveMQ------>主题生产者和消费者

冥焱
 冥焱
发布于 01/23 20:25
字数 459
阅读 186
收藏 0

一、pom

 <!--聚合工程集成关系-->
  <!--统一整合第三方框架依赖信息-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
  </parent>

  <dependencies>
    <!-- -springboot 整合Web组件 整合SpringMVC 就会把传统方式的SpringMVC依赖的jar全部给下载来 -->
    <!-- 引入spring-boot-starter-web 帮你整合好所有相关的依赖jar包 原理 maven依赖传递 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--springboot整合activeMQ-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>
  </dependencies>

二、配置文件(application.yml)

spring:
  activemq:
    broker-url: tcp://192.168.44.135:61616
    user: admin
    password: admin
  jms:
    #此处如果为false表示为队列(queue)true表示为主题(topic)
    pub-sub-domain: true
#主题名称
mytopic: boot-topic

三、配置类


import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

import javax.jms.Queue;
import javax.jms.Topic;

/**
 * @ProjectName: springbootActiveMQDemo
 * @Package: cn.**.config
 * @Author: huat
 * @Date: 2020/1/22 15:25
 * @Version: 1.0
 */
@Configuration
public class ActiveMQConfig {
    //通过配置文件获取主题名称
    @Value("${mytopic}")
    private String topicName;

    @Bean
    public Topic topic(){
        return new ActiveMQTopic(topicName);
    }

}

四、生产者



import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


import javax.jms.Topic;

/**
 * @ProjectName: springbootActiveMQDemo
 * @Package: cn.**.topic
 * @Author: huat
 * @Date: 2020/1/22 15:29
 * @Version: 1.0
 */
@Component
public class TopicProduce {
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;
    @Autowired
    private Topic topic;

    public void produce(){
        //发送消息
        jmsMessagingTemplate.convertAndSend(topic,"topic****bootDemo");
    }

    @Scheduled(fixedDelay = 3000)//定时任务  3秒
    public void produceScheduled(){
        //发送消息
        jmsMessagingTemplate.convertAndSend(topic,"topic--->Scheduled****bootDemo");

    }
}

五、消费者


import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

import javax.jms.JMSException;
import javax.jms.TextMessage;

/**
 * @ProjectName: springbootActiveMQDemo
 * @Package: cn.**.topic
 * @Author: huat
 * @Date: 2020/1/22 16:35
 * @Version: 1.0
 */
@Component
public class TopicConsumer {
    @JmsListener(destination = "${mytopic}")//监听注解,里面的值为队列名称
    public void receive(TextMessage textMessage) throws JMSException {
        System.out.println("接受的消息是"+textMessage.getText());
    }
}

六、启动类



import javafx.application.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
 * @ProjectName: springbootActiveMQDemo
 * @Package: cn.**
 * @Author: huat
 * @Date: 2020/1/22 14:46
 * @Version: 1.0
 */
@SpringBootApplication
@EnableJms//开启jms的注解以及适配
@EnableScheduling//开启定时任务
public class SpringbootAppStart {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootAppStart.class,args);
    }
}

 

© 著作权归作者所有

冥焱
粉丝 19
博文 143
码字总数 110956
作品 0
运城
私信 提问
加载中

评论(0)

初识ActiveMQ消息中间件

ActiveMQ官方网站:https://activemq.apache.org/ 关于ActiveMQ消息传递的方式详见: https://segmentfault.com/a/1190000014958916 https://www.cnblogs.com/cyfonly/p/6380860.html 本篇博......

帅得拖网速
2019/05/12
55
0
SpringBoot整合ActiveMQ消息队列

首先要讲什么是ActiveMQ:AciveMQ是Apache出品的目前最流行,能力强劲的开源消息总线 主要功能: 1、 解决服务之间代码耦合 2、 使用消息队列,增加系统并发处理量 主要应用场景: 1、 当系统...

逆风局局长熊
2018/12/06
0
0
SpringBoot整合ActiveMq要分以下几个步骤:

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013115157/article/details/79413429 第一步:从ActiveMq官方上下载ActiveMq服务 http://activemq.apache.o...

MorganLai
2018/03/01
0
0
springboot整合kafka应用

1、kafka在消息传递的使用非常普遍,相对于activemq来说kafka的分布式管理和使用更加灵活。 2、activemq的搭建和使用可以参考:   activemq搭建和springmvc的整合:http://www.cnblogs.co...

小不点丶
2017/11/09
0
0
只需三步:内嵌ActiveMQ到SpringBoot应用中

不知你是否有过这样的体验: 在调试带JMS组件的应用时, 需要额外启动一个JMS服务器来配合测试。 这样既操作繁琐,又不利于实现单元测试——不符合单元测试AIR原则(自动化,独立性,可重复,...

天上只北
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【 开发指南 】智能家居技能

本文作者:DuerOs 目录 一、教学视频 二、整体架构 三、开发步骤&资料整理 四、常见问题解答 五、智能家居文档 树状提纲 ————————————————————————————————...

百度开发者中心
2019/03/29
23
0
008. 并发容器类 Map

1. JDK 源码学习方法 1. 演绎推导法 示例:因果推理。 因为 JAVA 中只提供了 BIO 和 NIO 两种方式,所以一切框架中,涉及到网络处理的,都可以用这两个知识点去探究原理。 2. 归纳总结法 示例...

紫穹
今天
75
0
如何使用sed替换换行符(\\ n)? - How can I replace a newline (\n) using sed?

问题: How can I replace a newline (" \\n ") with a space (" 如何将换行符(“ \\n ”)替换为空格(“ ") using the sed command? “)使用sed命令? I unsuccessfully tried: 我尝试失......

javail
今天
109
0
OSChina 周一乱弹 —— 原来这叫分别焦虑

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《A Careful Tearing》- Levi Patel 手机党少年们想听歌,请使劲儿戳(这里) 清明...

小小编辑
今天
182
0
trim、stripslashes、htmlspecialchars函数

通过 PHP 验证表单数据 我们要做的第一件事是通过 PHP 的 htmlspecialchars() 函数传递所有变量。 在我们使用 htmlspecialchars() 函数后,如果用户试图在文本字段中提交以下内容: <script>...

imzchloe
今天
130
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部