本文通过简单的示例代码和说明,让读者能够了解微服务如何集成RabbitMq

之前的教程 https://www.cnblogs.com/leafstar/p/17641358.html

在这里我将介绍Centos中通过docker进行安装RabbitMq

 

1.首先你已经有一台可以使用的虚拟机(教程很多)

 

2.yum install docker -y 

 

3.拉取docker镜像

docker pull rabbitmq
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:latest

 

4.开启web管理界面

docker exec -it 15a67332f595 bash

通过rabbitmq-plugins list命令可列出插件的启用和禁用状态

rabbitmq-plugins list

开启RabbitMQ的web界面即可管理RabbitMQ服务

rabbitmq-plugins enable rabbitmq_management


打开浏览器并访问:http://服务器ip:15672/,并使用默认用户guest登录,密码也为guest。我们可以看到如下图的管理页面:

5.ok,接下来我们用已有的微服务项目集成RabbitMq

 

6.分别在bank1和bank2的pom文件下添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

 

7.在两个服务配置文件中添加

 

  rabbitmq:
    host: 192.168.74.134
    port: 5672
    username: guest
    password: guest
    publisher-confirms: false  #  消息发送到交换机确认机制,是否确认回调
    publisher-returns: true
    devtools:
      restart:
        enabled: false

注意添加位置

 

8.在bank1包下添加Mq配置如下

 

@Configuration
public class RabbitMQConfig {
    public static final String EXCHANGE_NAME="boot_topic_exchange";
    public static final String QUEUE_NAME="boot_queue";
    //交换机
    @Bean("bootExchange")
    public Exchange bootExchange(){
        return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
    }
    //队列
    @Bean("bootQueue")
    public Queue bootQueue(){
        return QueueBuilder.durable(QUEUE_NAME).build();
    }
    //将交换机和队列进行绑定
    @Bean
    public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange){
        return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
    }
}

 

9.在controller里面调用,添加下面自动装配

@Autowired
private RabbitTemplate rabbitTemplate;

 添加接口

@GetMapping("/writeMQ")
public String writeMQ() {
    rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, "boot.as", "Hello,MQ");
    return "添加成功";
}

重启项目并调用,后端没有打印任何异常

 

10.进入MQ的webui界面,消息已经成功添加

 

11.bank2中添加监听者并启动bank2

 

12.可以看到,bank2第一时间拿到了消息

此时消息被消费

 

13.MQ的使用场景相当广,这里只是简单演示一下,具体业务和场景还需要大家考量。

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/leafstar/p/17641407.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!