我正在尝试在wildfly中配置JMS群集。 我已经让队列工作了,但我在the docs读到了一个有趣的属性:
.address:每个群集连接仅适用于发送到以此值开头的地址的邮件。注意:这不使用通配符匹配。
据我所知,这允许我为不同的队列创建不同的集群。每个群集都会#34;听"仅发送到以address属性中定义的值开头的给定地址的消息。 它引起了我的注意,我试图让它工作,所以我有两个队列:
<jms-queue name="ClusteredQueue">
<entry name="java:/jms/queue/ClusteredQueue"/>
<entry name="jms/queue/ClusteredQueue"/>
</jms-queue>
<jms-queue name="SecondClusteredQueue">
<entry name="java:/jms/queue/SecondClusteredQueue"/>
<entry name="queue/SecondClusteredQueue"/>
</jms-queue>
我尝试设置群集连接:
<cluster-connections>
<cluster-connection name="my-cluster">
<address>jms</address>
<connector-ref>http-connector</connector-ref>
<discovery-group-ref discovery-group-name="dg-group1"/>
</cluster-connection>
</cluster-connections>
这很有效。
我不明白的是:在这句话中
...适用于发送到以此值开头的地址的消息...
&#34;地址&#34;
究竟是什么?但是我只希望对一个队列进行聚类,但是我尝试的任何东西都会使两个队列都无法访问。 (发件人发送邮件,但是我的计算机上另一个Wildfly实例中的接收者从未收到它)
我尝试过的值:
如果地址是jms-queue.name,第一种情况应该导致SecondClusteredQueue接收,但不是ClusteredQueue 如果jms-queue.entry.name是地址,则示例2应该使SecondClusteredQueue接收,但不能接收ClusteredQueue。
如前所述,在这两种情况下都没有队列收到消息。
如果它有帮助,我的生产者会使用以下代码注入查询:
@Resource(mappedName = "java:/jms/queue/ClusteredQueue")
private transient Queue myQueue;
@Resource(mappedName = "java:/queue/SecondClusteredQueue")
private transient Queue myNewQueue;
我的接收者(MDB)有以下注释:
// ClusteredQueue的Receiver @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName =&#34; destinationLookup&#34;,propertyValue =&#34; java:/ jms / queue / ClusteredQueue&#34;), @ActivationConfigProperty(propertyName =&#34; destinationType&#34;,propertyValue =&#34; javax.jms.Queue&#34;)}) // Receiver for SecondClusteredQueue @MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName =&#34; destinationLookup&#34;,propertyValue =&#34; java:/ jms / queue / SecondClusteredQueue&#34;), @ActivationConfigProperty(propertyName =&#34; destinationType&#34;,propertyValue =&#34; javax.jms.Queue&#34;)})