我正在尝试将当前的 RabbitMQ 实现移植到 ActiveMQ(出于我无法控制的几个原因)。我正在尝试设计与我们当前的 RabbitMQ 设计相同的数据流。
在我们当前的设计中,我们在 RabbitMQ 中创建一个主题,然后消费者(玩家)创建他们的队列并使用键绑定(使用格式player-[id]-[up/down]
)绑定到主题。因此,您最终会得到一个名为 Topic 的主题GamePoints
和数千个队列(每个玩家一个)绑定到该主题,其键等于玩家 ID。我们现在可以GamePoints
使用 key 为主题生成一条消息,player-1234-up
具有该 ID 的玩家将收到该消息。这很好用。这也允许我们创建键绑定,player-1234-*
并接收所有发往该玩家的消息。
我是 ActiveMQ 的新手,并试图模仿这种行为。到目前为止,我想出了以下内容:
- 我们创建一个名为
GamePoints
- 每个播放器在连接时都会创建一个订阅者,该订阅者带有一个 JMS 选择器
playerId=1234
- 当游戏产生消息时,它会将消息发送到
GamePoints
标题PlayerId
值为1234
- 带有 JMS Selector 的订阅者(只要当时处于活动状态)将收到此消息,其他订阅者将不会收到此消息
- 我们还可以使用选择器创建订阅者,例如
playerId like '1234-%'
这是一个好的模式吗?我担心这不会扩展,因为在我有数十万订阅者的情况下,它必须为每条消息运行数十万的 JMS 选择器
谢谢您的帮助!