1

我有一个带有一些主题的消息代理,以及在其上运行的一组应用程序。现在我想在相同的主题上(如果可以的话,在同一个代理上)运行一组新的相同应用程序(比如 QA 环境)。做这个的最好方式是什么。创建一个新的代理和/或创建一组新的主题很麻烦,因为我们的环境处于严格的官僚主义之下。

4

4 回答 4

2

AFAIK EMS 不支持您建议的任何内容。有几个选项可以得到你正在寻找的东西。

拥有独立的 EMS 服务器将是理想的解决方案。这将允许您的非生产环境有一些小问题,而不会在您的生产环境中造成问题。

使用同一台服务器,您可以将特定于环境的前缀添加到所有队列/主题名称上。需要一些应用程序级别设置来使用哪个前缀(qa,dev,test,prod,...)。这可以很好地隔离环境,但如果任何环境的负载真的很重,可能就不会很好地工作。

对于主题,您可以使用一些 JMS 标头属性和消息订阅来确定将它们路由到哪个环境。我不建议这样做,因为它很容易搞砸并破坏两个环境。

于 2008-09-17T22:14:58.713 回答
1

我建议不要在生产和 QA 中同时使用相同的中间件服务器(特别是消息代理),因为在 QA 中,您可能想要进行不想影响生产的负载和浸泡测试。正如约翰所提到的,使用单独的服务器将是最简单的方法。

有点奇怪,为什么在 QA 环境中复制相同的主题集会出现如此严格的官僚主义;你不能只转储EMS的生产安装吗?

FWIW 与一些消息代理,主题和队列的创建有点微不足道。例如,在Apache ActiveMQ应用程序开发人员选择他们想要使用的队列和主题名称 - 然后您连接到正确环境的代理,它就可以正常工作(尽管您可以添加安全性以禁止某些用户创建主题/队列,如果您想添加官僚主义:)。

作为旁白; 我一直觉得很可笑的是,在企业环境中,关于允许使用哪些队列/主题名称的政策非常严格——然而在 Web 应用程序中,开发人员可以自由地在他们的应用程序中使用他们想要的任何 URI。毕竟在这两种情况下它们只是逻辑名称——中间件应该能够正常工作并支持审计:)

于 2008-09-18T09:02:06.737 回答
0

此要求可以通过在消息主题/队列或“主题”中作为限定符来实现,因此您可以在同一服务器上将环境模式从 DEV 隔离到 TEST。请记住,不建议跨环境的消息流通过使用相同的 EMS 服务器。

这一特殊要求应在“主题命名约定”中解决,这是 SOA 架构中定义消息格式、消息交换模式和主题设计等的经典任务。

例如,您的主题可以是..... DEV 或 TEST 或 UAT 等在哪里

于 2008-09-30T15:19:58.597 回答
0

我不会为同一个应用程序的多个环境使用相同的服务器,您可能会发生串扰,一个环境的消息最终会出现在另一个环境中。复制队列/主题并不复杂,重新配置应用程序应该是一件快速的事情。

您可能想了解的其他概念是桥(可以将到主题/队列的消息复制到另一个)我已经使用它来将来自一个主题的相同消息自动复制到 2 个不同的队列。我知道您可以在某个主题上使用持久订阅者,但这就是队列的用途(恕我直言)

消息选择:仅在消息具有特定标头时才检索消息的能力。

您还可以在网桥上进行消息选择。

于 2013-01-19T23:24:38.210 回答