【发布时间】:2012-11-12 19:14:16
【问题描述】:
任务:需要使用 c#.net 创建一个可以在多个实例上运行的控制台应用程序。 (出于可扩展性目的)
现在,如果您创建一个简单的应用程序,这很容易。我现在的问题是在我的应用程序上我有一个全局变量。让您了解这个应用程序是什么。这是一个接收 JSON 消息的小程序(我使用 RabbitMQ 作为消息传递部分)。然后它将接收到的消息存储在全局变量中。现在,这使得在多个实例上运行应用程序变得困难。因为如果您运行超过 1 个应用程序实例,则可能会在另一个应用程序上收到消息。这是因为 RabbitMQ 的循环行为。 (不能创建 Exchange 或路由密钥。)
我尝试过使用共享内存或 MemoryMappedFile,但这也不起作用。
我想到的另一件事是使用数据库。但我需要好的设计来做到这一点。 如果有人知道一种模式、一个例子或任何参考资料。让我知道。
非常感谢您的回复。
【问题讨论】:
-
您能否提供更多有关您的意图的信息?您是否希望处理具有多个实例的消息?你想并行化一些东西吗?
-
嗨@Dusan,更像是在多个实例上处理消息。 (在某种方式)。所以事情就是这样,我正在使用 RabbitMQ。我的应用程序正在从队列中使用。如果您运行应用程序的多个实例,这意味着您的队列中将有 2 个消费者。现在,当消息进入该队列时。它将转到您的第一个应用程序,当另一条消息进来时,它将转到第二个应用程序。 (轮循时尚)。现在可能是您将在第二个应用程序上收到的消息是相同的消息,因此我需要一种方法来查找该消息是否已使用 ID 存在。
-
如果消费者以 RR 方式接收消息,那么第二个应用程序如何以与第一个应用程序相同的消息结束?我错过了什么吗?
-
很抱歉回复晚了。所以它是这样的,当消息到达应用程序时,它有一个唯一的 ID。这就是我与其他一些数据一起保存的内容。现在将出现另一条消息,该消息可能是相同的唯一 ID,但具有不同的状态。顺便说一句,谢谢您的回复。
标签: c# .net design-patterns rabbitmq