-1

我有一个 Oracle 商务应用程序,它通过一个 JMS 队列使用消息。我有十个具有相同目标队列的消费者。我想了解这种架构的优缺点以及如何优化它。

4

2 回答 2

0

我只想说明这个问题与 Oracle Commerce 没有具体关系,而是关于实现队列的一般原则。

当您有一个队列和许多消费者时,请记住他们都会尝试同时处理消息。如果处理消息的顺序很重要,或者在处理当前消息之前需要处理相关消息,这在某些情况下可能是不可取的。即使这样,也有一些模式可以将消息放回队列以供稍后处理,以实现依赖消息处理。

当您有多个消费者时,异常处理是另一个棘手的主题。确保整个消息处理都有良好的异常处理,并将消息存回队列(通过抛出异常的方式)以供以后处理。此外,如果有一条消息可能会卡住处理,因为每次您可能希望将它们放在不同的队列中时,它都会生成,经过这么多异常。有一次,我们构建了一个异常处理框架来帮助处理所有这些场景。

如果您真的只想将消息广播给某个主题的许多消费者,请使用 pub-sub 架构,这更容易处理。

同样,就像其他评论所说的那样,您尝试做的事情将有助于提供良好的方向。

这是一个可以额外帮助您解决问题的讨论 - http://c2.com/cgi/wiki?MessageQueuingArchitectures

于 2015-08-12T16:31:18.420 回答
0

当消费者共享工作负载时,他们共享一个队列是很常见的。否则最好为每个消费者创建一个单独的队列。

如果您想广播 bij 在tippic 上发布消息,那么就有可能为每个消费者创建一座桥梁。

我的意思是从主题到消费者队列的桥梁。使用网桥的优点是当消费者进程在短时间内关闭时,消息将保留在队列中(消息也不会过期)。

于 2015-08-13T20:35:41.237 回答