我们需要将消息从一个ActiveMQ代理复制到另一个。这里的消息只需要复制,并且消息应该在两个代理中都存在。
我可以想到一个定制应用程序,该应用程序订阅某个目标并读取该消息,然后将消息重新发布到多个代理中的目标。
我无权在Broker中进行更改,因此我无法想到Network of Brokers选项。
是否有最佳实践或工具可用于将A-MQ消息从一个代理复制到另一个代理?
答案 0 :(得分:0)
据我所知和我所阅读的,没有访问目标代理的权限,我相信没有捷径可以避免自定义应用程序重新发布这些消息。
但是,取决于您要重新发布的消息,ActiveMQ提供的某些功能可能有助于您的实现(但考虑到计算成本,它们并不是免费的)。
例如,如果您要将通过该代理发送的邮件复制 ALL ,则可以考虑使用Mirrored Queues一个特定的前缀(例如“ copy”),这将使您可以让单个使用者在该前缀之后使用wildcard(例如“ copy。>”)。该消费者将获得发送到代理的消息,该消息将 ALL 发送给经纪人,这将简化您的实现,因为您只需要关心该单个消费者并从中重新发布。但是,这样做会产生成本,因为如文档中所述,启用镜像队列将使系统中的每个队列/主题重复,并将每个消息发布两次。您需要根据您的代理处理的消息量和可用内存,来考虑这是否对您造成严重的不便。
如果您只想复制消息的 Some 而不是全部消息,那么我认为处理消息的最优雅方法是创建消费者的抽象类(或特定的实现),并对要重新发布的队列使用该特殊的实现。该类将负责将消息重新发布到另一个代理,以一种与使用其他Consumer类时透明的方式进行。
我在上面已经谈到了消费者,但是相同的概念可以应用于主题和订户。希望这些想法对您有所帮助:)