0

我正在尝试将当前的 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 选择器

谢谢您的帮助!

4

0 回答 0