【发布时间】:2015-12-02 18:57:53
【问题描述】:
将 MDB 与多种类型的消息一起使用的最佳实践是什么,使用多个队列,一个队列对应一种类型的消息,或使用一个队列对应不同激活规范选择器和消息头类型的所有类型?
【问题讨论】:
标签: jakarta-ee ejb jms
将 MDB 与多种类型的消息一起使用的最佳实践是什么,使用多个队列,一个队列对应一种类型的消息,或使用一个队列对应不同激活规范选择器和消息头类型的所有类型?
【问题讨论】:
标签: jakarta-ee ejb jms
我认为(与任何事情一样)需要考虑一些权衡:
让队列执行一个单一的、定义明确的函数可以促进良好的封装性,并使您的应用程序尽可能灵活和封装良好。这将增加队列特定线程池等可能性,因此您可以将更多资源专用于一种消息类型,或确保一次类型的长时间运行请求不会阻塞另一种类型的更紧急请求。
另一方面,添加队列会占用系统资源,因此队列过多可能效率低下(尽管您需要 很多 才能注意到这一点),或者如果这样做会造成混乱很难识别特定消息类型的正确队列。
一个值得考虑的 EIP 是 command pattern - 它使用单个队列来执行多个操作。还值得牢记facade pattern - 即使您的应用程序在内部使用许多不同的队列,您可能更喜欢使用外观来从客户端系统呈现它。
【讨论】: