gpt4 book ai didi

java - 处理大量 JMS 消息类型

转载 作者:行者123 更新时间:2023-12-01 08:52:28 25 4
gpt4 key购买 nike

我是 jms 新手,目前正在设计一款战舰游戏。我使用 jms 和 activemq 来进行它们之间的通信,到目前为止,我为 jms 通信创建了 4 个类,它们是主题和队列接收器和发送器,具有更改目的地和发送的简单方法。

现在我在处理这些消息时遇到了问题,我决定每条消息都将通过 ObjectMessage 传递,内部对象将告诉监听器如何处理它。

我有 5 种不同的消息类别:验证,数据(例如高分、重播等),InGameMessages(ShipRegistration、TurnUpdate 等),聊天消息,MatchMakingMessages(仅限 GameSearch 和 GameSearchCancel),

所以我认为向每条消息添加 MessageType 枚举是个好主意,但最终我最终编写了包含超过 20 个 switch 语句案例和大量类转换的监听器。

现在我想重新写一遍,但我仍然停留在消息处理上,因为我找不到不同的想法,或任何可以处理这个问题的设计模式。

有什么想法吗?

最佳答案

您可以使用“MessageType”枚举的值设置 JMS 属性。 JMSType 是一个内置属性,您可以使用它,也可以将自己的属性添加到每条消息中(名称如“MessageType”)

在客户端,读取消息并测试该属性的值,并将其转换回 switch 语句中的枚举,然后根据与消息关联的类的对象执行消息的转换,仅使用一个主题,每个客户端订阅该主题。

您可以为基于 JMS 选择器的每种消息类型配备一个监听器,而不是 switch 语句,每个监听器仅选择 JMS 属性的一个值(即 MessageType)。当然,一切都取决于您的用例(严格排序等)

关于java - 处理大量 JMS 消息类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42299844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com