我正在为游戏系统创建基础架构。我需要它作为扩展和故障转移的消息库。它还使用套接字来发布消息的发布者/订阅者。我的挑战是:我应该使用我拥有的东西,还是使用像nServiceBus或MassTransit这样的成熟ESB?
这是我到目前为止所做的,有点复杂。首先,它是一个扑克系统。
客户端连接到套接字以接收消息。然后将消息分派到一个或多个本地表队列。 (当然可以有多个客户)。
在后端运行的卡经销商客户也通过不同的插座连接。 (可能有多个经销商)。
在后端运行的机器人客户端也通过不同的套接字连接。 (可以有多个机器人客户端)。
每个客户和经销商在数据库中创建“订户”记录。这表明他们的IP是什么,以及最终连接到哪些表。
概述:
不同的客户端可以连接到不同的套接字,但是可以订阅同一个表。因此,任何指向一个表的消息都可能由多个套接字处理,以确保消息在每个表的基础上消失。
我是如何实现这一点的,我有一个Message表和一个ControllerMessage表。 ControllerMessage表跟踪特定Controller处理的所有消息。我使用简单的LEFT OUTER JOIN来确定需要由特定Controller发送的消息。
系统效果很好。故障转移非常快速有效,因为当另一方意外断开连接或意外关闭时,会立即通知异步套接字。
但是......有没有比建立我自己的ESB更好的方式?我甚至做了一些消息丰富和适应的事情,ESB可以提供;虽然我必须创建代码或XSLT模式。
答案 0 :(得分:0)
嗯,你不需要重新发明轮子。大多数ESB都支持上面提到的大多数功能。 以下是使用WSO2 ESB [1]实现pub-sub的完整用例。
仅供参考:WSO2 ESB是具有Apache 2.0许可证的100%开源ESB。
[1] http://wso2.org/library/articles/2011/12/wso2-esb-example-pubsub-soa