我正在撰写一篇关于从数据库轮询(通过同步存储过程调用)转换到消息队列(通过发布/订阅)的技术文章。我希望能够解释轮询数据库与设置连接到AMQP代理并配置消息处理程序有何不同,以及轮询数据库比后者更加繁重。是否有人可以在这里提供解释,或指向一个关于epoll如何在通知套接字上可用新数据的高级教程?
poll
非常相似,但有两个区别:poll
没有的选项(特别是边缘触发和一次性通知),可以让你在某些情况下编写更有效率的代码。kqueue
,这是一种显著不同的方式来获得类似的优势,Solaris有/dev/poll
等等,而一些*nixes没有等效物。因此,如果你想编写可移植的代码,你要么使用poll
,要么使用一些高级库,如libevent
,或者自己编写libevent
的等效物。)select
和poll
,那么参考资料中链接的维基百科文章和博客文章几乎可以告诉您所需了解的一切内容,手册页将填补任何空白。poll
,然后再学习epoll
的不同之处。epoll
对数据库文件、底层消息系统的pipe
或socket
,以及几乎任何可以表示为文件描述符的内容进行监视。因此,我不确定了解epoll
将如何帮助您解释轮询数据库与轮询消息队列之间的差异。当然,这两者之间存在巨大的差异,但事件触发机制并不是其中之一。
http://en.wikipedia.org/wiki/Epoll
或者http://www.kernel.org/doc/man-pages/online/pages/man4/epoll.4.html
吗?这两个链接都有一般的解释。另外,我不确定解释epoll
如何帮助解释你正在讨论的差异。你可以在数据库文件上的inotify上使用epoll
,或者你可以在消息系统下面的队列上使用epoll
,那么你的目标是什么? - abarnert