ketchup 消息队列rabbitmq使用
ketcup git地址:https://github.com/simple-gr/ketchup
rabbitmq 安装
1.docker pull rabbitmq:management
2.docker run -itd --name rabbitmq --restart=always -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=qwe123QWE rabbitmq:management
RABBITMQ_DEFAULT_USER:默认登陆名称。RABBITMQ_DEFAULT_PASS:默认登陆密码
3.http://ip:15672 web页面登陆
出现该页面就代表安装成功
ketchup 中 配置 rabbitmq
"RabbitMQ": { "Host": "192.168.190.4",//ip地址 "UserName": "admin",//用户名 "Password": "qwe123QWE",//密码 "RetryCount": 3,//重试执行次数 "FailCount": 1//失败执行次数 }
1.定义event实体
public class UserEvent : EventHandler { public string Name { get; set; } public string Job { get; set; } }
2.实现eventhandler
QueueConsumerMode.Normal:一般消息
QueueConsumerMode.Retry:重试队列
QueueConsumerMode.Fail:死信队列
[QueueConsumer(nameof(HelloEventHandler), QueueConsumerMode.Normal, QueueConsumerMode.Retry, QueueConsumerMode.Fail)] public class HelloEventHandler : BaseEventHandler<UserEvent> {
//实现一般队列与重试队列 public override Task Handle(UserEvent @event) { Console.WriteLine($"消费。{@event.Name}---{@event.Job}"); throw new Exception(); } //实现一般队列与重试队列 public override Task Handled(EventContext context) { Console.WriteLine($"调用{context.Count}次。类型:{context.Type}"); var model = context.Content as UserEvent; return Task.CompletedTask; } //实现死信队列方法 public override Task FailHandler(EventContext context) { Console.WriteLine($"调用{context.Count}次。私信队列方法 ,方法,类型:{context.Type}"); return base.FailHandler(context); } }
3.启动程序
rabbitmq 中已经显示出队列的信息
发布消息
ServiceLocator.GetService<IEventBus>().Publish(new UserEvent() { Name = "simple", Job = "it" });
日志显示消费
写在最后
QQ群:592407137 期待大家一起研究,学习~~
如果喜欢,请给予一个Start 给予支持。谢谢!
作者:simple
出处:https://www.cnblogs.com/alangur/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
ketchup
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!