Fork me on GitHub

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 给予支持。谢谢!

posted @ 2020-05-20 12:18  phil_guo  阅读(516)  评论(0编辑  收藏  举报