第 37 章 避免冲突(Pattern)
尽可能重复利用连接、会话、使用者和制作者。
最常见的消息传递反模式是为发送或使用的每条消息创建一个新的连接、会话和制作者。这些对象需要时间来创建,并且可能涉及多次网络往返,因此资源使用较差。始终重复使用它们。
注意Spring Messaging 模板等一些常用的库使用这些反模式。如果您使用的是 Spring 消息传递模板,则性能可能会较差。Spring Messaging Template 只能在缓存 Jakarta 消息会话(例如使用 Jakarta Connectors)的应用服务器中安全地使用,然后仅用于发送消息。它不能安全地用于同步使用消息,即使在应用服务器中也是如此。
避免空消息.
XML 等详细格式占用了线上的大量空间,因此性能会受到影响。如果可以,避免在消息正文中使用 XML.
不要为每个请求创建临时队列。
这种常见的反模式涉及临时队列请求响应模式。使用临时队列请求模式时,消息将发送到目标,并且使用本地临时队列的地址设置回复标头。当接收者收到邮件时,它们将处理邮件,然后发回回复到回复标题中指定的地址。使用这种模式的常见错误是在每个发送的消息上创建一个新的临时队列,这会大大降低性能。相反,应当为许多请求重复使用临时队列。
不要使用消息驱动型 Bean,除非有此必要。
使用 MDB 来使用消息的速度要比使用简单的 Jakarta 消息使用者来使用消息的速度慢。