有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java处理大量JMS消息类型

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

现在,当我想要处理这些信息时,我面临一个问题, 我已经决定,每条消息都将通过ObjectMessage传递,内部对象将告诉侦听器如何处理它

我有5种不同的信息分类: 认证, 数据(如高分、重播等), InGameMessages(船舶注册、交单更新等), 聊天信息, MatchMaking消息(仅限于GameSearch和GameSearchCancel)

所以我认为在每条消息中添加MessageType枚举是个好主意, 但最终,我在switch语句中用20多个案例和大量的类铸件编写了侦听器

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

有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    Yes可以使用“MessageType”枚举的值设置JMS属性:JMSType是一个内置属性,您可以使用它,或者您可以将自己的属性添加到客户端的每条消息(名称类似于“MessageType”),读取消息并测试该属性的值,然后将其转换回枚举。在switch语句中,根据与消息关联的类的对象执行消息的强制转换,只使用一个主题,每个客户机订阅该主题。与switch语句不同,基于JMS选择器,每个消息类型可以有一个侦听器,每个侦听器只选择JMS属性(即MessageType)的一个值。当然,这一切都取决于您的用例(严格的顺序等)