SpringBoot整合ActiveMq要分以下几个步骤:

SpringBoot整合ActiveMq要分以下几个步骤:
第一步:从ActiveMq官方上下载ActiveMq服务
下载地址:http://activemq.apache.org/download.html
我当前下载的是版本是5.15.3 官方备注:当前最新的稳定版本。


解压成功后,我们会看到这样的目录结构:

第二步:运行ActiveMq服务
这里要注意的地方,是运行64位的还是32位的,根据个人电脑来确定,

运行后会得到如下图所有的信息:


浏览器中访问:http://127.0.0.1:8161 用户名与密码都是admin

第三步:创建SpringBoot项目
小编第一次遇到的问题做测试:
部分pom.xml

<!-- Maven POM文件继承 spring-boot-starter-parent -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.7.RELEASE</version>
</parent>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
第四步:创建SpringBoot项目的主函数
package com;
 
import org.apache.activemq.command.ActiveMQQueue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
 
@SpringBootApplication
public class Application {
   @Bean
   public ActiveMQQueue queue() {
      return new ActiveMQQueue("promoteAct");
   }
   protected static Logger logger=LoggerFactory.getLogger(Application.class);
   public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
      logger.info("SpringBoot Start Success");
   }
}
第五步:创建SpringBoot项目的生产者与消费者

生产者:

package com.mq;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import javax.jms.Queue;
 
/**
 * describe:
 *
 * @author laizhihui
 * @date 2018/02/28
 */
@Component
@EnableScheduling
public class PromoteActProducer {
 
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;
 
    @Autowired
    private Queue queue;
 
    @Scheduled(fixedDelay = 2000)    // 每2s执行1次
    public void send() {
        this.jmsMessagingTemplate.convertAndSend(this.queue, "hello,activeMQ");
    }
}
消费者:

package com.mq;
 
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
 
/**
 * describe:
 *
 * @author laizhihui
 * @date 2018/02/28
 */
@Component
public class PromoteActConsumer {
 
    /**
     * 客户端消费
     * @param consumer
     */
    @JmsListener(destination = "promoteAct")
    public void receiveQueue(String consumer) {
        System.out.println(consumer+"消息已经消费了");
    }
}
注:这里不修改任何关于ActiveMq的配置。
结果如下:

我们发现,该消息已经成功的在生产和消费啦,那我们去浏览器中查看一下我们所消费的数据
当时我有点懵逼,这啥情况啊,我不是启动了ActiveMq的服务了嘛? 为何这队列中没有任何消费记录啊,这里我去查看了一个SpringBoot的启动日志才发现,在SpringBoot启动时,在本地开启了一个ActiveMq服务,那就明白了,原来我之前启动的服务就没连接上。
当时我有点懵逼,这啥情况啊,我不是启动了ActiveMq的服务了嘛? 为何这队列中没有任何消费记录啊,这里我去查看了一个SpringBoot的启动日志才发现,在SpringBoot启动时,在本地开启了一个ActiveMq服务,那就明白了,原来我之前启动的服务就没连接上。

那如何解决这个问题呢,下面我们就要有请application.properties配置文件了,

修改配置文件:(这段配置是从网上找的)

spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.in-memory=false
#true表示使用连接池
spring.activemq.pool.enabled=true
#连接池最大连接数
spring.activemq.pool.max-connections=5
#空闲的连接过期时间,默认为30秒
spring.activemq.pool.idle-timeout=30000
#强制的连接过期时间,与idleTimeout的区别在于:idleTimeout是在连接空闲一段时间失效,而expiryTimeout不管当前连接的情况,只要达到指定时间就失效。默认为0,never
spring.activemq.pool.expiry-timeout=0
再次启动服务,发现怎么无法启动了

解决方案:
在pom.xml中引用 这时就可以正常启动了
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-pool</artifactId>
</dependency>

这次我们发现,我们启动的服务已经在服务器中被监听了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值