寻找使用 TCP/IP 套接字将相同消息发送到多个目的地的最佳方法。我正在使用 Windows 上现有的 VS 2010 C++ 应用程序。希望尽可能使用已经解决了许多复杂性的标准库/设计模式方法。
这是我正在考虑的一种方法。一个主线程从数据库中检索消息并将它们添加到某种线程安全队列中。应用程序还为每个客户端套接字连接到某个目标服务器有一个线程。这些线程中的每一个都将从线程安全队列中读取,并通过 tcp/ip 套接字发送消息。不过,可能有比这更好/更简单/更强大的方法..
我必须关心的主要问题是延迟。目的地可能在任何地方,并且一个套接字连接和另一个套接字连接之间可能存在显着延迟。消息必须以精确的 FIFO 顺序到达所有目的地。
一个目的地也将被视为主要目的地。所有消息都必须到达该目的地,没有例外。对于其他目的地,即非主要目的地,消息只是副本,如果非主要目的地没有收到少量消息,这不是绝对关键的。在任何时候,非主要目的地之一都可能成为主要目的地。如果其中一个目的地远远落后,那么该线程将需要赶上主要目的地,但会跳过一些消息。
寻找任何建议。到目前为止的初步研究,我的情况似乎类似于单生产者和多消费者模式,或者可能是 Java 中的主从模式。
我需要在 Windows 上用 C++ 实现这一点,并且应用程序必须使用现有定义的协议使用 tcp/ip 套接字。
任何帮助都将不胜感激。