SpringBoot整合ActiveMQ

1、 ActiveMQ下载
http://activemq.apache.org/download-archives.html
2、下载完成后解压,然后找到bin下的activemq start启动
在这里插入图片描述
启动成功后,访问:http://localhost:8161/admin,输入账号密码,默认是都是admin,账号密码可以在/conf/users.properties里修改。
在这里插入图片描述
3、然后创建两个项目,一个是消息提供者(provider)和 消费者(consumer),然后开始配置依赖。

        <!--activemq依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <!--消息队列连接池-->
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
            <version>5.15.0</version>
        </dependency>
        <!--springboot2.0以上需要加-->
        <dependency>
            <groupId>org.messaginghub</groupId>
            <artifactId>pooled-jms</artifactId>
        </dependency>

这里需要注意一点,如果你的springboot项目版本低于2.0,可以不用加pooled-jms,如果高于2.0必须加pooled-jms,否则会导致JmsMessagingTemplate注入失败。

4、配置application.properires文件,除了端口号都一样

# 端口号
server.port=3050
# activeMQ服务器地址
spring.activemq.broker-url=tcp://localhost:61616
# 账号
spring.activemq.user=yzy
# 密码
spring.activemq.password=yzy
# 等待消息发送响应的时间,设置为0等待永远。
spring.activemq.send-timeout=0
# true 表示使用内置的MQ,false则连接服务器
spring.activemq.in-memory=false
# true 表示使用连接池,false时,每发送一条数据创建一个连接
spring.activemq.pool.enabled=true
# 连接池最大连接数
spring.activemq.pool.max-connections=20
# 空闲的连接过期时间,默认为50秒
spring.activemq.pool.idle-timeout=50000
# 是否在回滚回滚消息之前停止消息传递。这意味着当启用此命令时,消息顺序不会被保留。
spring.activemq.non-blocking-redelivery=false

5、首先在启动类添加@EnableJms注解,开启消息队列

@SpringBootApplication
@EnableJms //开启消息队列
public class MqApplication {
    public static void main(String[] args) {
        SpringApplication.run(MqApplication.class, args);
    }
}

消息提供者代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * description ActiveMQ消息提供者
 *
 * @author yanzy
 * @date 2020/5/9 13:06
 */
@RestController
public class providerController {

    //注入springboot封装的工具类
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    /**
     * description 添加队列
     *
     * @param name
     * @return void
     * @author yanzy
     * @version 1.0
     * @date 2020/5/9 13:44
     */
    @GetMapping("add")
    public void add(String name) {
        for (int x = 0; x < 50; x++) {
            //添加消息到消息队列,providerMQ是队列名称
            jmsMessagingTemplate.convertAndSend("providerMQ", name + x);
        }
    }
}

消费者代码:

import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;

/**
 * description ActiveMQ消息消费者
 *
 * @author yanzy
 * @date 2020/5/9 13:06
 */
@Component
public class consumerService {

    /**
     * 使用@JmsListener注解,配置消费者监听的队列(providerMQ)
     * @SendTo注解,会将此方法返回的数据,写入到OutQueue中去
     *
     * @author yanzy
     * @version 1.0
     * @date 2020/5/9 13:33
     */
    @JmsListener(destination = "providerMQ")
    @SendTo("consumerMQ")
    public String handleMessage(String name) {
        System.out.println(name + "消息已经消费了");
        return name;
    }
}

然后运行消息提供者,访问:http://localhost:8161/admin/queues.jsp
在这里插入图片描述
可以看到50条消息已经发布上去了

上面的参数:
Number Of Pending Messages:消息队列中待处理的消息
Number Of Consumers:消费者的数量
Messages Enqueued:累计进入过消息队列的总量
Messages Dequeued:累计消费过的消息总量

运行消费者,可以看到50条消息都被消费了
在这里插入图片描述
在这里插入图片描述
爱代码,更爱生活,滴滴。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值