springboot+ActiveMQ 安装到使用基础教程

ActiveMQ 安装到使用基础教程

安装

  1. 下载地址:http://activemq.apache.org/download-archives.html,选择一个你喜欢的版本,这里我选择windpws系统的。

  2. 下载完成后,解压。
    bin----存放的是脚本文件

    conf----存放的是基本配置文件
  data----存放的是日志文件
  docs----存放的是说明文档
  examples----存放的是简单的实例
  lib----存放的是activemq所需jar包
  webapps----用于存放项目的目录 
  1. 进入bin\win64文件夹进入,以管理员身份运行activemq.bat文件即可;5672等端口报错就找到conf\activemq.xml文件,修改如下即可:
<transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name= "openwire"  uri= "tcp://127.0.0.1:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600" />
            <transportConnector name= "amqp"  uri= "amqp://127.0.0.1:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600" />
            <transportConnector name= "stomp"  uri= "stomp://127.0.0.1:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600" />
            <transportConnector name= "mqtt"  uri= "mqtt://127.0.0.1:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600" />
            <transportConnector name= "ws"  uri= "ws://127.0.0.1:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600" />
</transportConnectors> 
  1. 启动成功访问http://127.0.0.1:8161/admin/queues.jsp,默认账号密码但是admin。

springboot整合ActiveMQ

pom.xml

 <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</groupId>
            <artifactId>spring-jms</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-client</artifactId>
            <version>5.15.8</version>
        </dependency>

配置文件

spring:
  activemq:
    broker-url: tcp://127.0.0.1:61616  
    user: admin   #账号
    password: admin #a密码
    queue-name: test  # 在http://127.0.0.1:8161/admin/queues.jsp登录成功之后创建
    pool:
      enabled: true        
      max-connections: 10  

配置类


import org.apache.activemq.ActiveMQConnectionFactory;
 
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.config.SimpleJmsListenerContainerFactory;
 
import javax.jms.ConnectionFactory;
import javax.jms.Queue;
/**
 * 配置类
 */
@Configuration
 
public class ActiveMQConfig {
 
    @Value("${spring.activemq.broker-url}")
    private String brokerUrl;
 
    @Value("${spring.activemq.user}")
    private String userName;
 
    @Value("${spring.activemq.password}")
    private String password;
 
    @Value("${spring.activemq.queue-name}")
    private String queueName;
 
    @Bean(name = "queue")
    public Queue queue() {
        return new ActiveMQQueue(queueName);
    }
 
    @Bean
    public ConnectionFactory connectionFactory(){
        return new ActiveMQConnectionFactory(userName, password, brokerUrl);
    }
 
    // 在Queue模式中,对消息的监听需要对containerFactory进行配置
    @Bean("queueListener")
    public JmsListenerContainerFactory<?> queueJmsListenerContainerFactory(ConnectionFactory connectionFactory){
        SimpleJmsListenerContainerFactory factory = new SimpleJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setPubSubDomain(false);
        return factory;
    } 
 
}

controller



import org.apache.activemq.command.ActiveMQTopic;
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;

import javax.jms.Destination;
import javax.jms.Queue;

@RestController
public class ProducerController {
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    @Autowired
    private Queue queue;

    @GetMapping("/queue/publish")
    public String publish(String str) {
        System.out.println("传入内容:" + str);
        this.sendMessage(this.queue, str);
        return "success";
    }

    @GetMapping("/queue/subscription")
    public String subscription(String str) {
        System.out.println("传入内容:" + str);
        this.sendMessage(str);
        return "success";
    }

    public void sendMessage(String msg) {
        ActiveMQTopic destination = new ActiveMQTopic("lideru.test");
        jmsMessagingTemplate.convertAndSend(destination, msg);
    }

    // 发送消息,destination是发送到的队列,message是待发送的消息
    private void sendMessage(Queue queue, final String message) {
        jmsMessagingTemplate.convertAndSend(queue, message);
    }

}

接收类

import org.springframework.jms.annotation.JmsListener;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class QueueConsumerListener {
    //queue模式的消费者 3个 concurrency="3",代表消费者个数
    @JmsListener(destination="${spring.activemq.queue-name}", containerFactory="queueListener") //,concurrency="3"
    public void readActiveQueue(String message)
    {
        System.out.println("队列接受到1:" + message);
    }

    @JmsListener(destination="${spring.activemq.queue-name}", containerFactory="queueListener") //,concurrency="3"
    public void readActiveQueue1(String message)
    {
        System.out.println("queue接受到2:" + message);
    }
}
import org.springframework.jms.annotation.JmsListener;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class QueueConsumerListener {
    //queue模式的消费者 3个 concurrency="3",代表消费者个数
    @JmsListener(destination="${spring.activemq.queue-name}", containerFactory="queueListener") //,concurrency="3"
    public void readActiveQueue(String message)
    {
        System.out.println("队列接受到1:" + message);
    }

    @JmsListener(destination="${spring.activemq.queue-name}", containerFactory="queueListener") //,concurrency="3"
    public void readActiveQueue1(String message)
    {
        System.out.println("queue接受到2:" + message);
    }
}

启动类 注意加@EnableJms注解

@SpringBootApplication
@EnableJms
public class ActivemqApplication {

    public static void main(String[] args) {
        SpringApplication.run(ActivemqApplication.class, args);
    }

}

访问 http://127.0.0.1:8080/queue/publish?str=我暑李登辉

控制台打印

传入内容:我暑李登辉
接受到:我暑李登辉

http://127.0.0.1:8080/queue/subscription?str=渣渣灰
控制台打印

传入内容:渣渣灰
消费者2打了:渣渣灰
消费者1打了:渣渣灰

证明已经成功咯

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring BootActiveMQ的集成可以实现消息队列的功能。以下是实现步骤: 1. 配置ActiveMQ依赖:在项目的pom.xml文件中添加ActiveMQ的依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> ``` 2. 配置ActiveMQ连接信息:在项目的application.properties(或application.yml)文件中配置ActiveMQ的连接信息。 ```properties spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin ``` 3. 创建消息发送者:编写一个消息发送者类,使用JmsTemplate发送消息到ActiveMQ队列。 ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Component; @Component public class MessageSender { @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String message) { jmsTemplate.convertAndSend("myQueue", message); } } ``` 4. 创建消息接收者:编写一个消息接收者类,使用@JmsListener注解监听ActiveMQ队列,并处理接收到的消息。 ```java import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class MessageReceiver { @JmsListener(destination = "myQueue") public void receiveMessage(String message) { System.out.println("Received message: " + message); // 处理接收到的消息 } } ``` 5. 发送和接收消息:在需要发送消息的地方,通过调用消息发送者的sendMessage方法发送消息;在消息接收者类中,使用@JmsListener注解监听到消息后进行处理。 通过以上步骤,你就可以在Spring Boot应用中使用ActiveMQ实现消息队列的功能了。记得在启动应用之前,确保你已经启动了ActiveMQ服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值