springboot 业务消息总线及延时消息回调

Posted 西门不是西门

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 业务消息总线及延时消息回调相关的知识,希望对你有一定的参考价值。

什么是 notify-spring-boot-starter?

notify-spring-boot-starter消息组件,支持分布式业务消息总线、延时消息等,屏蔽底层消息引擎种类,提供线上统一的接口,可发送异步消息及延时消息,同时可订阅异步消息或延时消息。目前可选择基于redis、rabbitmq等任一一种做消息引擎,其他消息中间件将陆续支持。

支持的消息引擎中间件

  • redis

  • rabbitmq

有哪些特点?

屏蔽底层不同的中间件类型,统一接口调用。

有哪些功能?

异步业务消息订阅及延时消息订阅

有哪些场景可以使用?

单一业务分发消息进行异步处理时,比如业务完成推送业务数据给第三方;

支付时,后端服务需要定时轮训支付接口查询是否支付成功;

快速开始

引入依赖

<dependency>
    <groupId>com.github.likavn</groupId>
    <artifactId>notify-spring-boot-starter</artifactId>
    <version>1.1.3</version>
</dependency>

发送与订阅异步消息

@Resource
private MsgSender msgSender;

// 发送异步消息
// 第一个参数是业务消息code
// 第二个参数是业务消息Object实体对象数据
msgSender.send("testMsgSubscribe", "charging");

订阅异步业务消息监听器实现类SubscribeMsgDemoListener.java

/**
 * 订阅异步消息实现类
 * 继承超类【SubscribeMsgDemoListener】并设置监听的消息实体对象
 */
@Slf4j
@Component
public class SubscribeMsgDemoListener extends SubscribeMsgListener<String> 

  	/**
  	 * 必须有一个构造函数订阅业务消息类型
  	 */
    public SubscribeMsgDemoListener() 
      	// 设置订阅的业务消息类型,其他类型的服务的消息类型,可设置对应服务id+业务消息类型code
        super(Collections.singletonList("testMsgSubscribe"));
    

  	/**
  	 * 接收业务消息体对象数据
  	 */
    @Override
    public void accept(String msg) 
        log.info("消息监听:", msg);
    

发送与订阅延时消息

@Resource
private MsgSender msgSender;

// 发送异步消息
// 第一个参数 【DelayMsgDemoListener.class】为当前延时消息的处理实现类
// 第二个参数为延时消息体
// 第三个参数为延时时间,单位:秒
msgSender.sendDelayMessage(DelayMsgDemoListener.class, "922321333", 5);

延时消息监听器实现类DelayMsgDemoListener.java

/**
 * 订阅延时消息
 * 实现接口【DelayMsgListener】并设置回调消息body实体
 */
@Slf4j
@Component
public class DelayMsgDemoListener implements DelayMsgListener<String> 
    @Override
    public void onMessage(MsgRequest<String> msg) 
        log.info("接收延时消息回调body:", msg.getBody());
    

更多信息请查阅相关接口类...

项目地址:https://github.com/likavn/notify-spring-boot-starter

以上是关于springboot 业务消息总线及延时消息回调的主要内容,如果未能解决你的问题,请参考以下文章

记录Delay延时队列的使用

面向业务的微服务消息总线

springboot使用RabbitMQ实现延时任务

Springboot 整合 rocketmq及调度方案实现

马蜂窝消息总线——面向业务的消息服务设计

SpringBoot:RabbitMQ 延迟队列