SpringBoot整合MQ(JMS和AMQP)的使用

一个Java小白的学习之路 个人博客 youngljx.top

SpringBoot整合MQ(JMS和AMQP)的使用_第1张图片

MQ

消息队列(Message Queue)是一种进程间或线程间的异步通信方式,实现消息队列的服务即消息中间件

JMS

JMS(Java Message Service )是java消息服务,统一java api层次的标准似的多个客户端可以通过JMS进行交互,包括两种消息模型:点对点和发布者/订阅者,同时JMS仅支持java平台。

SpringBoot整合ActiveMQ

CentOS环境下安装ActiveMQ

1.下载ActiveMQ

wget https://archive.apache.org/dist/activemq/5.15.12/apache-activemq-5.15.12-bin.tar.gz

2.解压安装

tar -xzvf apache-activemq-5.15.12-bin.tar.gz

3.启动ActiveMQ

cd bin/
./activemq start

4.开放端口

修改防火墙开启activemq端口8161(管理平台端口)和61616(通讯端口)或关闭CentOs防火墙

ECS服务器开启相应的安全组端口号

5.访问 ip地址+8161端口号,控制台用户名和密码默认都是admin

整合SpringBoot

1.倒入依赖

 <dependency>
     <groupId>org.springframework.bootgroupId>
     <artifactId>spring-boot-starter-activemqartifactId>
 dependency>

2.application.properties配置属性

#broker地址默认通讯端口61616
spring.activemq.broker-url=tcp://ip地址:61616
#配置信任所有的包,为了支持发送消息对象
spring.activemq.packages.trust-all=true
spring.activemq.password=admin
spring.activemq.user=admin

3.创建一个消息队列Bean

@SpringBootApplication
public class ActivemqApplication {
     

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

    @Bean
    Queue queue(){
     
        return  new ActiveMQQueue("amq");
    }
}

4.创建一个JMS组件完成消息的发送和接受

@Component
public class JmsComponent {
     
   
    @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;

    @Autowired
    Queue queue;
    
    /**
    *  JmsMessagingTemplate消息发送模版的convertAndSend方法进行消息的发送
    */
    public void send(Message msg){
     
        jmsMessagingTemplate.convertAndSend(this.queue,msg);
    }
   
    /**
    *  @JmsListener(destination = "amq")相应的方法是一个消息消费者,这里简单示例
    *
    */
    @JmsListener(destination = "amq")
    public void receive(Message msg){
     
        System.out.println(msg);
    }
}

public class Message implements Serializable {
     
    private String content;
    private Date sendDate;
    //省略其他
}

5.简单测试,获取到结果并且ActiveMQ上也显示相应的消息队列

@RunWith(SpringRunner.class)
@SpringBootTest
public class ActivemqApplicationTests {
     

    @Autowired
    JmsComponent jmsComponent;

    @Test
    public void contextLoads() {
     
        Message msg=new Message();
        msg.setContent("hello ljx");
        msg.setSendDate(new Date());
        jmsComponent.send(msg);
    }
}

AMQP

AMQP(高级消息队列协议)是一个线路层的协议规范,而不是API规范,因此它天然是跨平台的,就像SMTP,HTTP协议一样,只要开发者按照规范的格式发送数据,任何平台都可以通过AMQP进行消息交互。

SpringBoot整合RabbitMQ

1.CentOS 环境下安装RabbitMQ

此处使用Docker安装如下(前提是CentOS下已经安装了Docker容器):

docker run -d --hostname my-rabbit --name some-rabbit -P rabbitmq:3-management

安装结果如下:name我这里变成了someone-rabbit

SpringBoot整合MQ(JMS和AMQP)的使用_第2张图片

SpringBoot整合MQ(JMS和AMQP)的使用_第3张图片

SpringBoot整合MQ(JMS和AMQP)的使用_第4张图片

2.整合SpringBoot

未完待续

你可能感兴趣的:(MQ,SpringBoot,activemq,rabbitmq)