风的研发日记


欢迎来到我的个人站~


RabbitMQ使用

window安装RabbitMQ:

  • 首先安装Erlang: https://www.erlang.org/downloads
  • 然后安装 RabbitMQ: https://www.rabbitmq.com/
  • 启动 RabbitMQ 
  • 进入RabbitMQ 安装目录 sbin 目录下: C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.11\sbin
  • 执行命令: rabbitmq-plugins enable rabbitmq_management 安装后台管理插件
  • 安装完成后浏览器访问: http://localhost:15672 可以进入管理界面, 默认用户名密码均为: guest

Ubuntu 安装RabbitMQ

首先配置源

echo "deb https://dl.bintray.com/rabbitmq/debian trusty main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list
echo "deb http://packages.erlang-solutions.com/ubuntu trusty contrib" | sudo tee -a /etc/apt/sources.list.d/erlang_solutions.list

导入对应的 key

wget -c -O- http://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -
wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc |sudo apt-key add -

开始安装 erlang 和 RabbitMQ

sudo apt-get update
sudo apt-get install erlang-nox
sudo apt-get install rabbitmq-server

RabbitMQ 操作命令

sudo service rabbitmq-server start # 启动
sudo service rabbitmq-server stop # 停止
sudo service rabbitmq-server restart # 重启
sudo service rabbitmq-server status # 查看当前状态

RabbitMQ nginx 外网部署

  location ~* /rabbit/api/(.*?)/(.*) {
     proxy_pass http://localhost:15672/api/$1/%2F/$2?$query_string;
  }

  location ~*/rabbit/(.*) {
     client_body_buffer_size 128k;
     proxy_send_timeout   90;
     proxy_read_timeout   90;
     proxy_buffer_size    4k;
     proxy_buffers     16 32k;
     proxy_busy_buffers_size 64k;
     proxy_temp_file_write_size 64k;
     proxy_connect_timeout 30s;
     rewrite ^/rabbit/(.*)$ /$1 break;
     proxy_pass http://localhost:15672;
  }

开始使用

  • 创建两个队列

image.png

  • 创建一个 Exchanges,并且添加两个绑定

image _1_.pngimage _2_.png 到此,RabbitMQ 设置完成,接下来开始SpringBoot 的编程。

SpringBoot 配置

在SpringBoot 工程里面添加 amqp 依赖,我们选择SpringBoot 自带的就可以

  //添加RabbitMQ
    implementation "org.springframework.boot:spring-boot-starter-amqp"

然后新建一个队列监听组件:

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;

@Slf4j
@Component
public class QueueMessageListener {

  static final String QUEUE_MAIL = "q_mail";
  static final String QUEUE_PAY = "q_pay";

  @RabbitListener(queues = QUEUE_MAIL)
  public void onRegistrationForMailQueue(RabbitMail data) throws Exception {
    //收到 q_mail 消息,实现业务逻辑
  }

  @RabbitListener(queues = QUEUE_PAY)
  public void onRegistrationForPayQueue(RabbitPay data) throws Exception {
   	//收到 q_pay 消息,实现业务逻辑
  }
}

在需要使用的时候使用 RabbitTemplate 发送对应的消息即可

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.stream.Collectors;

@Component
public class MessagingService {
  @Autowired RabbitTemplate rabbitTemplate;
  

  public void sendEmail() {
      //此处的registration 要和 RabbitMQ中创建的Exchanges 对应 
      rabbitTemplate.convertAndSend("registration", "", "example@mail.com");
  }

  public void sendValidatePay() {
    rabbitTemplate.convertAndSend("registration", "", "data");
  }
}

至此,就可以使用 RabbitMQ 啦。

最近的文章

Microsoft REST API指南(转载)

原文链接:https://mp.weixin.qq.com/s/Xd_SgS_PYU6zjxtv0h8HWQ如果喜欢作者的文章,请关注“DotNET技术圈”订阅号以便第一时间获得最新内容。本文版权归作者和长沙.NET技术社区共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。本文版权归作者和长沙.NET技术社区共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。Micro...…

other继续阅读
更早的文章

iOS13 NFC 读写开发

iOS13 发布以后,苹果开放了NFC 写入的权限,相比起原来只能读取的半残状况,现在可以做的事情就更多了,刚好最近完成了一个NFC 读写相关的小应用,中间踩了不少坑,在此记录一下。值得注意的是虽然现在苹果在iOS13以后提供了写入的接口,但是仍然有不少限制。首先是硬件方面的限制,只有iPhone7 以后的设备(包括iPhone7)才具有写入的功能,如果你查看苹果官网的设备信息会看到iPhon7 以后搭载的是“支持读卡器模式的 NFC”,而之前的iPhone 则是 “NFC”,换言之,只有...…

iOS继续阅读