SpringBoot整合ActiveMQ 5超简单

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。消息形式支持点对点和订阅-发布。

ActiveMQ是什么 ActiveMQ是消息队列技术,为解决高并发问题而生 ActiveMQ生产者消费者模型(生产者和消费者可以跨平台、跨系统) ActiveMQ支持如下两种消息传输方式 点对点模式,生产者生产了一个消息,只能由一个消费者进行消费 发布/订阅模式,生产者生产了一个消息,可以由多个消费者进行消费

1首先去官网下载windows版本的MQ

2接下来解压,进入bin目录,双击bat文件运行mq服务。

3.启动后会有以下提示。mq默认端口号为8161. 切记这只是服务端口,通信端口为61616

所以我们可以通过http://localhost:8161访问管理页面,通过tcp://localhost:61616来连接消息服务器,用到的用户名和密码都在以下文件中(默认为admin=admin)

springboot整合ActiveMQ

  1. 加入依赖:

spring-boot-starter-activemq

  1. 配置连接属性:

  2. 创建队列组件。

/** 
* @ClassName: QueueInit 
* @Description: TODO 
* @Author: markGuo 
* @Date: 2019/12/18 1:08 
**/
@Component  //作用是实例化当前类。
public class QueueInit {    
    @Bean  //把当前方法产生的bean对象置于spring容器。
    Queue queue(){        
        //创建一个名称为myQueue的mq队列
        return new ActiveMQQueue("myQueue");   
    }}

4.创建要发送的消息实体。(如发送简单字符串则可不创建消息实体)

/** 
* @ClassName: Messege 
* @Description: TODO 
* @Author: markGuo 
* @Date: 2019/12/18 1:10 
**/
@Data   //该注解为lombok提供(须引入lombok依赖)。旨在生成setter getter toString 构造方法(默认是无参构造)
public class Messege implements Serializable {
    private String content;    
    private Date sendDate;
   

5.创建生产者类

/** 
* @ClassName: Producer 
* @Description: TODO 
* @Author: markGuo 
* @Date: 2019/12/18 1:10 
**/
@Component
public class Producer {    
    @Autowired    
    private JmsMessagingTemplate template;   //注入java消息服务模板 
    @Autowired    
    private Queue queue;   //注入第3步实例化的队列组件。 
    
    public void sendMsg(Messege msg){     
        //发送消息实体
        template.convertAndSend(this.queue,msg);
    }    
    public void sendMsg(String msg){    
        //发送消息字符串
        template.convertAndSend(this.queue,msg);    
    }}

6.创建消费者类 (消费者消费消息的方法不可以有返回值,会报死循环。如果必须有,方法上加入@SendTo)

/** 
* @ClassName: Customer 
* @Description: TODO 
* @Author: markGuo 
* @Date: 2019/12/18 1:18 
**/@Component
public class Customer {    
    @JmsListener(destination = "myQueue")//destination为接收的队列名称  
    //jmsListener通过监听实现对特定队列的消费。
    public void recive(Messege msg){  
        //接收消息实体
        System.out.print(msg+">>>>>>>>>");    
    }    
    @JmsListener(destination = "myQueue")    
    public void recive(String msg){      
        //接收消息字符串
        System.out.print(msg+">>>>>>>>>");    
    }}

7.创建测试类 (在实际项目中,通常在业务层进行逻辑判断后调用生产者生产消息)

@SpringBootTestclass 
SbandmqApplicationTests {    
    @Autowired    
    private Producer producer;    
    @Test    
    public void test1(){        
        //发送消息实体
        Messege msg = new Messege("你好",new Date());        
        producer.sendMsg(msg);    
    }    
    @Test    
    public void test2(){   
        //发送消息字符串
        producer.sendMsg("我不好");    
    }}

好了。以上步骤非常轻松。接下来就可以进行实际应用了。 在项目上经常遇到发送短信的需求,一般将信息发送到消息中间件中,异步的去处理发送需求。 其实就是由mq来实现生产者生产信息。 消费者在监听的过程中调用短信发送的过程。

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 12:31
以前小时候我最痛恨出轨、偷情的人,无论男女,为什么会出轨?现在我成了自己最讨厌的人,没想到分享的东西在牛客会被这么多人看,大家的评价都很中肯,我也认同,想过一一回复,但我还是收声了,我想我应该说说这件事,这件事一直压在我心里,是个很大的心结,上面说了人为什么出轨,我大概能明白了。我们大一下半年开始恋爱,开始恋爱,我给出了我铭记3年的承诺,我对她好一辈子,我永远不会背叛,我责任心太重,我觉得跟了我,我就要照顾她一辈子,我们在一起3年我都没有碰过她,她说往东我就往东,她说什么我做什么,她要我干什么,我就干什么!在学校很美好,中途也出过一些小插曲,比如男闺蜜、男闺蜜2号等等等。但我都强迫她改掉了,我...
牛客刘北:两个缺爱的人是没有办法好好在一起的,但世界上哪有什么是非对错?你后悔你们在一起了,但是刚刚在一起的美好也是真的呀,因为其他人的出现,你开始想要了最开始的自己,你的确对不起自己,21岁的你望高物远,你完全可以不谈恋爱,去过你想要的生活,你向往自由,在一起之后,你要想的不是一个人,而是两个人,你不是变心了,就像你说的,你受够了,你不想包容了,冷静几天是你最优的选择,爱人先爱己。
社会教会你的第一课
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务