JMS(特别是Tibco EMS)我可以在消息代理中拥有一个环境

时间:2008-09-17 16:09:15

标签: jms environment tibco ems

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

4 个答案:

答案 0 :(得分:2)

AFAIK EMS不支持您的建议。有几种方法可以满足您的需求。

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

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

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

答案 1 :(得分:1)

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

有点奇怪为什么在质量保证环境中复制同一组主题的官僚主义如此严密;你不能只是把EMS的生产安装转储?

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

撇开;我总是觉得在企业环境中有很多关于允许使用哪些队列/主题名称的严厉政策,这很可笑 - 但在Web应用程序中,开发人员可以自由地在他们的应用程序中使用他们想要的任何URI。毕竟在这两种情况下,它们只是逻辑名称 - 中间件应该能够以任何方式工作和支持审计:)

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

对于同一个应用程序,我不会在多个环境中使用相同的服务器,您可以进行交叉对话,其中一个环境的消息最终会出现在另一个环境中。复制队列/主题并不复杂,重新配置应用程序应该是一件快速的事情。

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

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

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