比方说,我有一个发布者和多个听众。发布者发送消息时,必须由所有听众接收。如果其中一个听众倒闭了,他应该在他再次回来的时候收到留言。实现耐用的pub/sub?
我该如何执行此操作?
我正在考虑使用队列: 每个侦听器都使用它自己的队列,并使用队列的位置向发布者发送子邮件消息。发布者将位置保存到文件或数据库,并开始将其消息发送到该队列。
所以,这将是时间表:
出版商开始。还没有听众。
出版者发送消息1.
出版者发送消息2
出版者发送消息3
监听器1开始,并与发布者所预订。
出版者发送消息4
监听器1接收消息4
监听器2开始并与发布者所预订。
出版者发送消息5
监听器1接收消息5
监听器2接收消息5
监听器2 chrashes。
出版者发送消息6
监听器1接收消息6
出版者发送消息7.
监听器1接收消息7.
监听器2恢复时,没有必要再次订阅。
监听器2接收消息6
监听器2接收消息7.
底线是我需要每一个监听器队列中,和一个队列或信道来发送和接收关于“开始听”消息和'停止聆听'。 我在正确的方向思考,还是我完全错了?
我明白了。发布者必须仅向一个队列发送消息,并且不必为每个订阅者都发送消息。这些工作将由一名或多名工作人员完成。因为发行商对所有用户的每个订阅者的速度太慢,数百或数千听众。 – Thomas 2011-05-27 20:24:53
这是正确的。让发布者尽快发布消息并坚持下去,并在生活中继续前进。然后交付给用户是解耦的,延期的,异步的......都很好。 :) – 2011-05-27 21:00:32