当前位置: 首页 > 知识库问答 >
问题:

消息代理适合简单的消息发送者和接收者吗?

宣弘新
2023-03-14

我正在参与一个项目,该项目将首先构建一个简单的消息系统,该系统将接收消息,存储消息并将其路由到适当的部门。基本用例是:

    < li >用户在网站表单中写下一条消息或一个问题,并选择一个部门将消息发送给该部门 < li >根据用户的选择,消息被发送到相应部门的消息队列,状态为“未读”、“已读”等。(我们还没有确定所有的状态)。 < li >这些信息成为用户与网站互动的一部分,即,如果用户拨打客服电话,他们将能够调出用户发送和接收的信息

基本问题是,在这种情况下,消息代理是否合理。我可以看到支持和反对的理由。首先,简单地将消息写入数据库可能会导致超时、死锁等可能丢失消息的风险。代码需要处理这些情况。无论数据库或系统是否启动并运行,消息代理(例如RabbitMQ)都可以处理消息并保存它们,从而减少消息丢失。

另一方面,消息代理似乎也有些矫枉过正,因为它只是将消息传递给一个或多个部门,然后就消失在一个人的历史中了。那么,为什么要为如此简单的事情包括所有的基础设施呢?

这个系统将建立在这个初始框架的基础上,因此它将不再是一个简单的消息发送者,但目前它不会将应用程序或系统连接在一起,也不会提供任何类似ESB的功能。现在,计划是使用RabbitMQ、MassTransit和Sagas来发送、路由和跟踪信息。这是不是太过分了?或者,既然我们的目标是零故障率,这是否有保证?

谢谢你!

共有1个答案

司马彦
2023-03-14

我真的不了解这个系统的架构。您是否仅仅因为拥有“消息”的域对象而使用消息队列?这些消息中是否有某些内容实际上需要“传递”?它们是将要接收这些消息的异构系统吗?还是需要进行一些离线处理?

您希望有一个简单的“消息”数据库表,其中包含状态、部门和内容,除非您对这些消息做了一些事情,否则您会将太多的基础架构放在适当的位置。

 类似资料:
  • 我是Kafka的新手,运行一个简单的Kafka消费者/生产者的例子,就像在Kafka消费者和KafkaProducer上给出的那样。当我从终端运行消费者时,消费者正在接收消息,但我不能使用Java代码监听。我也在StackoverFlow上搜索了类似的问题(链接: Link1,Link2),并尝试了解决方案,但似乎没有什么对我有用。kafka版本:和相应的maven依赖在pom中使用。 Java生

  • 我是Kafka的新手。我在网上读了很多关于Kafka制作人和Kafka消费者的说明。我成功地实现了前者,它可以向Kafka集群发送消息。然而,我没有完成后一个。请帮我解决这个问题。我看到我的问题像StackOverflow上的一些帖子,但我想更清楚地描述一下。我在虚拟盒子的Ubuntu服务器上运行Kafka和Zookeeper。使用1个Kafka集群和1个Zookeeper集群的最简单配置(几乎是

  • 我已经用C语言编写了kafka消费者和生产者,使用的库是Library dkafka库。kafka代理版本是kafka_2.12-2.3.0。生产者正在成功生成消息,dr_msg_cb函数确认成功传递。但是,消费者没有收到来自代理的消息。有人能帮助进一步调试吗? 我可以看到,从消费者到代理的TCP连接已经建立。但TCPdump显示代理并没有向消费者发送任何数据。我在消费者代码上启用了调试,下面是消

  • 通常在服务器发送一些数据时发生Message事件。服务器发送到客户端的消息可以包括纯文本消息,二进制数据或图像。无论何时发送数据,都会触发函数。 此事件充当客户端对服务器的耳朵。每当服务器发送数据时,都会触发事件。 以下代码段描述了打开Web Socket协议的连接。 还需要考虑使用Web套接字可以传输哪些类型的数据。Web套接字协议支持文本和二进制数据。就Javascript而言,文本指的是字符

  • 我有1个活动和1个普通类,其中活动1接收消息,普通类发送消息。如何实施: 在活动一中。班 在Ordinary.class 如何发送空消息(1)的代码?

  • 我不知道是怎么回事,我的java客户机消费者用@KafkaListener注释后没有收到任何消息。当我通过命令行创建消费者时,它可以工作。同样,Producer也能按预期工作(同样在java中)。有人能帮我理解这种行为吗? application.yml 生产者配置: 消费者配置: 制作人 Spring控制器: 这是我的控制台输出,正如您所看到的,它发送一条消息,但该方法不接收任何内容。如果我没有