带有条件通知者的消息队列
Posted
技术标签:
【中文标题】带有条件通知者的消息队列【英文标题】:Message queue with conditional notifyer 【发布时间】:2012-12-14 16:02:33 【问题描述】:假设我有一个消息队列,它接收具有成员name
、type
等的消息。
此队列中是否有一种类型的观察者的名称,它需要具有特定内容的消息?
if (message.name.equals(observer.wantedName)
observer.notify();
【问题讨论】:
【参考方案1】:以下只是伪代码中如何解决问题的示例。 MessageQueue 有一个哈希表,其中键是消息类型和值数组,带有此消息类型的侦听器。此外,您还需要向 YourMessageQueue:observe()
添加一个描述条件的附加参数。
class YourMessageQueue extends /* or implements */ EventDispatcher
function addMsg(msg)
foreach(this.listeners[msg.type] as listener)
listener.notify(msg, this);
class YourObserver implements Observer
function createMesssageQueue()
msgq = new MessageQueue();
msgq.addObserver(this, 'foo');
class EventDispatcher
protected hashtable observers;
function addObserver(Observer observer, string eventType)
this.observers[eventType].push(observer);
interface Observer
function notify($data, $sender);
【讨论】:
以上是关于带有条件通知者的消息队列的主要内容,如果未能解决你的问题,请参考以下文章