我有一个服务应用程序,它的工作方式非常类似于 SignalR 背板,所以我认为创建自己的IMessageBus
实现来与后端对话是个好主意,而不是推出我自己的东西。问题是我找不到关于这份合同的太多信息。虽然我一直在看代码(看起来非常好),但我很难理解一些概念。
public interface IMessageBus
{
Task Publish(Message message);
IDisposable Subscribe(ISubscriber subscriber, string cursor, Func<MessageResult, object, Task<bool>> callback, int maxMessages, object state);
}
Task Publish(Message message);
这个很简单,基本上它必须向后端发送一条消息。我不担心这个,因为我的应用程序从服务器到客户端是单向的。
IDisposable Subscribe(ISubscriber subscriber, string cursor, Func<MessageResult, object, Task<bool>> callback, int maxMessages, object state);
return
: 尽管说了IDisposable
,我看到它总是返回一个 Subscription 对象,但是为什么IDisposable
呢?subscriber
标识一个连接。该连接可以订阅或取消订阅组。cursor
: 是最后收到的消息 ID。callback
: 这个回调什么时候执行?state
: 这究竟是什么?
有人可以解释一下这种方法是如何工作的吗?