JMS(esp Tibco EMS)我可以在消息代理中使用环境吗

JMS(esp Tibco EMS)我可以在消息代理中使用环境吗,jms,environment,tibco,ems,Jms,Environment,Tibco,Ems,我有一个带有一些主题的MessageBroker,以及一些在其上运行的应用程序集。现在,我想在相同的主题上(如果可以的话,在相同的代理上)运行一组新的相同应用程序(比如QA环境)。最好的方法是什么。创建一个新的经纪人和/或创建一组新的主题是很麻烦的,因为我们的环境处于严格的官僚制度之下。AFAIK EMS不支持您建议的任何内容。有几个选项可以得到你想要的东西 拥有独立的EMS服务器将是理想的解决方案。这将允许非生产环境出现一些问题,而不会在生产环境中造成问题 使用同一台服务器,可以在所有队列/主

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

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

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

使用同一台服务器,可以在所有队列/主题名称上添加特定于环境的前缀。需要有一些应用程序级别的设置来使用前缀(qa、dev、test、prod等等)。这将有助于对环境进行很好的隔离,但如果任何一个环境的负载确实很重,则可能不会工作得太好


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

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

这有点奇怪,为什么在QA环境中复制同一组主题会有如此严格的官僚作风;你就不能把EMS的生产安装搞得一塌糊涂吗

FWIW对于一些消息代理来说,主题和队列的创建有点琐碎。e、 g.在应用程序中,开发人员选择他们想要使用的队列和主题名称-然后连接到合适环境的代理,它就可以工作了(尽管如果您想要添加官僚机构,您可以添加安全性以禁止某些用户创建主题/队列:)


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

这一要求可以通过在消息主题/队列或“主题”中作为限定符来实现,因此您可以将环境模式与开发分离,以便在同一服务器上进行测试,不建议使用相同的EMS服务器跨环境传递消息

这个特殊的需求应该在“主题命名约定”中解决,这是SOA体系结构中定义消息格式、消息交换模式和主题设计等的经典任务


例如,你的主题可以是。。。。。如果是开发、测试或UAT等,我不会在同一应用程序的多个环境中使用相同的服务器,在一个环境的消息最终出现在另一个环境中时,可能会出现串扰。复制队列/主题并不复杂,重新配置应用程序应该很快

您可能想了解的其他概念包括 桥接器(一个主题/队列中的消息可以复制到另一个主题/队列中)我使用它将一个主题中的相同消息自动复制到两个不同的队列中。我知道您可以在主题上使用持久订户,但这就是队列的用途(IMHO)

消息选择:仅当消息上有特定标题时才检索消息的功能


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

这些应用程序使用硬编码的主题名称,还是中间有一些JNDI查找?