【发布时间】:2017-11-23 03:19:17
【问题描述】:
我有一个基于微服务的应用程序。我有一个接收 HTTP 请求的代理/网关 API。然后我有另外两个服务服务 A 和服务 B。当 Broker API 接收到消息时,它使用 RabbitMQ 将其发送到服务。然后在每个人中,我应该根据消息处理它并以不同的方式处理它(执行不同的操作)。
这是我目前处理消息的方式:
服务A
public string ProcessAsync(Message message)
{
switch (message.EventCode)
{
case "context 1":
return action1();
case "context 2":
return action2();
case "context 3":
return action3();
case "context 4":
return action4();
case "context 5":
return action5();
default:
throw new Exception("Unknown message event code!");
}
}
如果我有不超过 5 到 10 种不同的消息类型,则使用 switch 语句是有意义的。但在我的应用程序中,我有 30 个。编写这么大的条件语句很难看,而且维护起来也不同。我正在寻找一种能够从应用程序中消除此问题的设计模式。你有什么想法?您如何看待状态模式?
【问题讨论】:
标签: design-patterns asp.net-core rabbitmq microservices