easy-asyn

Easy-Asyn是一款专为异步消息设计的推送框架,旨在简化大型应用中异步消息的处理流程。它支持JMS和MQ方式的消息传递,以及通过Redis进行异步消息通讯的自定义扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

easy-asyn

介绍

一个简单的异步消息推送框架。我们都知道rpc通讯框架是同步的,姑且称之为同步消息框架吧。然而市面上目前并没有专门针对异步消息的框架。作者在长期的开发实践中,发现异步消息几乎是大型应用程序中必不可少的一部分,很多系统会通过mq或者redis等消息中间件来实现异步消息的功能。但是呢,各有各的写法,并没有统一的规范。于是想到了写这样一个小插件来优化开发。

Maven引用(点击 最新版本地址 查看最新版本)

<dependency>
    <groupId>io.github.xiaoyudeguang</groupId>
    <artifactId>easy-asyn</artifactId>
    <version>3.1.8-RELREASE</version>
</dependency>

使用说明

基本功能->异步通讯(默认jms方式(只能在一个应用程序内传递异步消息);如果配置了MQ,则走MQ方式(不同应用程序间传递消息))

发送异步消息

@AysnMsg(todo = "异步消息发送层")
public interface MqSender {

	 @AysnMsg(value = "自定义消息主题", todo = "发送一条异步消息")
	 public String sendMsg(String msg);
}

接收异步消息

@EasyBean(todo = { "JMS消息接收器" })
public class MqListener {
	
    private final static Logger logger = LoggerFactory.getLogger(MqListener.class);
    

    @JmsListener(destination = "自定义消息主题", containerFactory = "jmsListenerContainerQueue")
    public void onQueueMessage(String msg) {
        logger.info("接收到queue消息:{}",msg);
    }
}

高级功能->自定义扩展(以redis为例)

发送异步消息

@AysnMsg(todo = "异步消息发送层")
public interface MqSender {

	 @AysnMsg(value = "自定义消息主题", todo = "发送一条异步消息")
	 public String sendMsg(String msg);
}

@EasyBean(todo = { "Redis异步消息通讯" })
public class RedisAsynHandler implements IAysnHandler{
    
	@Autowired
	private static StringRedisTemplate stringRedisTemplate;
	
	@Override
	public Object doSendMsg(String title, String msg) {
		 stringRedisTemplate.convertAndSend(title, msg);
		 return "success";
	}
}

接收异步消息

@Configuration
public class RedisConfig {
 
    @Autowired(required = false)
    private MessageListener listener;
 
    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer() {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(RedisUtils.getConnectionFactory());
        container.addMessageListener(listener, new ChannelTopic("自定义消息主题"));
        return container;
    }
 
}
@EasyBean(todo = { "接收redis消息" })
public class RedisMsgListener implements MessageListener {
	
    @Override
    public void onMessage(Message message, byte[] pattern) {
    	 String key = RedisUtils.deserialize(pattern); //消息通道名称
    	 String msg = RedisUtils.deserialize(message.getBody()); //消息内容
         LogUtils.info(this, key + "订阅消息", message);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值