gpt4 book ai didi

Java消息分发/订阅?

转载 作者:行者123 更新时间:2023-12-02 08:38:31 32 4
gpt4 key购买 nike

我正在用 Java 创建一组小部件,用于解码和显示在串行接口(interface)接收到的消息。

消息类型由唯一标识符定义。每个小部件只对特定标识符感兴趣。

如何对应用程序进行编程,以便将消息正确分发到相关小部件?

最佳答案

如果这是针对单个应用程序(即一个主线程和几个线程),那么 JMS 就太过分了。

这个的基础是一个简单的队列(Java 有几个很好的队列,BlockingQueue 在后面挥手)。

串行端口读取其数据,格式化一些相关的消息对象,并将其转储到中央消息队列上。这可以像 BlockingQueue 单例一样简单。

接下来,您需要一个队列监听器/调度程序。

这是一个位于队列中的单独线程,等待消息。

当它收到消息时,会将其分派(dispatch)给等待的“小部件”。

它如何“知道”哪些小部件获得由您决定的内容。

它可以是一个简单的注册方案:

String messageType = "XYZ";
MyMessageListener listener = new MyMessageListener();
EventQueueFactory.registerListener(messageType, listener);

然后你可以这样做:

public void registerListener(String type, MessageListener listener) {
List<MessageListener> listeners = registrationMap.get(type);
if (listeners == null) {
listeneres = new ArrayList<MessageListener>();
registrationMap.put(type, listeners);
}
listeners.add(listener);
}

public void dispatchMessage(Message msg) {
List<MessageListener> listeners = registrationMap.get(type);
if (listeners != null) {
for(MessageListener listener : listeners) {
listener.send(msg);
}
}
}

此外,如果您使用 Swing,它还有一整套 Java Bean 属性监听器以及您还可以利用的其他功能。

这就是它的核心。这应该会给你足够的绳索让你陷入麻烦。

关于Java消息分发/订阅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490134/

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