当前位置: 首页 > 知识库问答 >
问题:

在Apache Artemis ActiveMQ中,是否可以将一个转移目标配置为另一个地址的源?

景安翔
2023-03-14

该地址是否有可能被转移的消息作为另一个地址的源?如果这是可能的,新的目标地址可以有不同于源的路由类型,换句话说,我的新源地址是一个多播,新的目标是一个选播,如果我理解正确,不同路由类型的地址之间的转移是不可能的,从我在这里读到的。

转移可以将特定的路由类型应用于消息,剥离现有的路由类型,或者简单地传递现有的路由类型。这在邮件可能设置了路由类型,但您希望将其转移到使用不同路由类型的地址的情况下非常有用。重要的是要记住,具有选播路由类型的消息实际上不会被路由到使用多播的队列,反之亦然

我试图配置的设置如下所示

<addresses>
      <address name="source.A">
        <multicast>
          <queue name="source.A"/>
        </multicast>
      </address>
      <address name="source.B">
        <multicast>
          <queue name="source.B"/>
        </multicast>
      </address>
      <address name="destination.AB">
        <multicast>
          <queue name="destination.AB"/>
        </multicast>
      </address>
      <address name="destination.C">
        <anycast>
          <queue name="destination.C"/>
        </anycast>
      </address>
</addresses>

<diverts>
      <divert name="divert-A">
          <routing-name>divert-A</routing-name>
          <address>source.A</address>
          <forwarding-address>destination.AB</forwarding-address>
          <exclusive>true</exclusive>
        </divert>
        <divert name="divert-B">
          <routing-name>divert-B</routing-name>
          <address>source-B</address>
          <forwarding-address>destination.AB</forwarding-address>
          <exclusive>true</exclusive>
        </divert>

        <divert name="divert-AB">
          <routing-name>divert-AB</routing-name>
          <address>destination.AB</address>
          <forwarding-address>destination.C</forwarding-address>
          <exclusive>false</exclusive>
        </divert>

</diverts>

共有1个答案

海宁
2023-03-14

使用其中一个的forwarding-address对另一个的address(即“source”)链接转移到一起应该没有问题。

关于路由类型的问题,我认为您误解了转移文档。“务必记住,具有选播路由类型的消息实际上不会被路由到使用多播的队列,反之亦然”的语句只是描述了divrit公开routing-type配置元素的原因。不同路由类型的地址之间的转移当然是可能的。正如您引用的文档所解释的,使用routing-type配置元素diversits可以执行以下操作之一:

  • 对邮件应用特定的路由类型
  • 删除现有路由类型
  • 通过
  • 传递现有的路由类型

路由类型的有效值为选播多播条带、&传递。默认值为strip。正如文档所述,routing-type“在邮件可能设置了其路由类型,但您希望将其转移到使用不同路由类型的地址的情况下非常有用。

由于默认的转移routing-typestrip,所以任何通过转移的消息都将删除其路由类型,这意味着它将被路由到绑定到配置的forwarding-address的所有队列,无论它们是anycast还是multicast队列。

 类似资料:
  • 我正在安装,默认情况下我有路径来设置我的。如果我选择此选项,一些文件夹出现在路径上。 这些文件夹是: > .Android .oracle_jre_usage .Gradle 为了更干净一点,我尝试将所有这些文件夹包装到另一个文件夹中,但每次运行时,它都给了我重新配置设置的选项。如果再次配置它们,文件夹将重新出现在路径上。 编辑二:根据提供的移动文件夹的博客,我更改的默认设置: 这里有as服务目录

  • 我有一个散列表 这是我的代码 我应该对我的代码做什么样的修改来确保它能按照我的要求编译和运行?

  • 我想发布一个依赖于OpenBabel的PyPI包。OpenBabel的维护者为Python 3.7上传了二进制Windows轮子,但没有为Pythin的更高版本上传。Christoph Gohlke的优秀站点包含3.8及以上版本的轮子,但它们不在PyPI上。 我希望我的软件包的用户只需< code > pip install my-package 并安装openbabel。如果他们在Windows

  • 我尝试用以下方法调用三个引用游标参数: 但是listOfObjects只包含cursor1的内容,无法获得cursor2的内容。

  • 问题内容: 我有一个包含Flash标语的Spring 2.5应用程序。我没有Flash组件的来源,但是它具有硬编码到某些页面的链接,这些链接最终以 我希望能够将这些.html页面重定向到现有的jsp页面为目的。我怎样才能让Spring将几个.html页面解析为.jsp页面? 我的项目看起来像: 我想重定向到 我可以用Spring做吗?我已经在myapp- servlet.xml中定义了Simple

  • 问题内容: 我需要将Java转换为的实例(包括地图内容) 我应该怎么做才能使此代码可编译? 问题答案: 从Collectors.toMap(…)javadoc: 例如: